将JSF inputText与支持bean的字段链接而不显示其值

我有这样的支持bean:

@ManagedBean @SessionScoped public class TestBean { private String testString; public String getTestString() { return testString; } public void setTestString(String testString) { this.testString = testString; } } 

我的xhtml页面也很简单:

            

我想要的一切 – 渲染我的h:inputText元素没有值(空)。
我是JSF的新手,所以,你能帮助我吗?
最诚挚的问候!

UPD!
这是简化的代码,我在其他地方使用testStringtestString有值,我想隐藏它! 我想保持这个价值。

如果它确实是一个请求/视图范围的 bean,那么您可能是浏览器内置自动完成/自动填充function的牺牲品。 您可以通过向相关输入组件添加autocomplete="off"来关闭它。

  

再次注意,不是JSF填充了输入,而是webbrowser本身。 清除浏览器缓存,您将看到浏览器不再执行此操作。 根据浏览器品牌/版本,您还可以将其重新配置为自动填充不那么急切。


更新 :根据您的问题更新,您的bean结果是会话作用域。 这不是基于请求/视图的表单的正常范围。 会话范围的bean实例在同一HTTP会话中的所有浏览器窗口/选项卡(读取:所有请求/视图)之间共享。 您通常只在会话中存储登录用户及其首选项(语言等)。 关闭并重新启动整个浏览器或使用其他浏览器/计算机时,您将只获得一个全新的实例。

将其更改为请求或视图作用域。 在这个特殊的简单示例中,请求范围应该足够:

 @ManagedBean @RequestScoped 

也可以看看:

  • 如何选择合适的bean范围?

根据评论更新2

哦,对,我最好使用@RequestScoped。 但它并没有解决我的问题 – 我想保留这个值,但我不想在textInput中显示它。 在请求 – 响应周期的上下文中,此值很重要。

具体的function要求现在更加明确(在未来的问题中,请在准备问题时注意这一点,我不知道你最初是这样问的)。 在这种情况下,使用带有2个属性的视图范围bean,如下所示:

 @ManagedBean @ViewScoped public class TestBean { private String testString; private String savedTestString; public void testAction() { savedTestString = testString; testString = null; } // ... } 

或者,您也可以将其存储在数据库或注入的托管bean的属性中,该托管bean实际上也是在会话范围内。

您应该将输入文本绑定到辅助bean中的其他字段。 如果要将该字段用于testString ,请将输入的值复制到testAction方法中的testString

     public String testAction() { testString = copyTestString; return "destinationPage"; } 

有些浏览器会忽略自动填充 – 它可以帮助将自动填充function放在表单标记中: