我正在努力学习JSF。
我有一个带注释的简单Hello.java @ManagedBean @RequestScoped ...
在index.xhtml上我有:
<h:inputText id="username"
value="#{hello.name}"
required="true"
requiredMessage="A name is required.">
</h:inputText>
<h:commandButton id="submit" value="Submit" action="response">
</h:commandButton>
我的问题是,当我点击提交按钮而不填写名称字段时,我收到错误消息。但是当我刷新页面时,错误消息仍然存在。它为什么不消失?我怎么能让它消失?
答案 0 :(得分:3)
您正在刷新表单提交。因此,表单将再次提交和验证。一个有点理智的浏览器会显示一个警告,如“您确定要重新发送帖子数据吗?”。你没见过这个吗?
在任何情况下,我都不确定你期望什么,因为这在同步POST表单上是完全自然的标准HTML / webbrowser行为(因此与JSF完全无关,因为它只是在这个“问题”的上下文中)一个HTML代码生成器),但如果你想避免在刷新POST请求时重新执行POST请求,那么最简单的方法是使它成为异步POST请求(通过ajax)而不是同步请求。这是一个嵌套的问题
<f:ajax execute="@form" render="@form" />
在<h:commandButton>
内。浏览器刷新仅刷新上一个同步请求,然后该请求将成为初始GET请求。