我有一个隐藏的输入字段,它的值是从请求作用域的属性中读取的:
<h:inputHidden id="myHiddenField" value="#{requestScope['myVar']}" />
我触发了一个ajax请求,我改变了myVar
的值。
<p:commandButton value="submit" action="#{myController.doSomething}" update="myHiddenField">
但是我的输入字段仍然包含旧的值。
你知道怎么解决这个问题吗?
更新:也许我需要再解释一下……myVar
包含所有带有错误信息(facesContext.getClientIdsWithMessages()
)的输入字段的id。
当我第一次提交表单时(有一些验证错误),它按预期工作。当我重新提交带有其他验证错误的表单时,myVar
的值没有更新……(仍然包含"旧"错误的id)当我重新提交没有验证错误的表单时,myVar
得到更新。(myVar
现在为空)
如果您希望在页面加载后访问bean,则至少需要将其设置为ViewScoped。当页面被加载时,RequestScoped bean将被销毁(请求被处理,不再需要它了)。