刷新页面后,验证错误消息仍然存在

时间:2013-02-24 10:46:32

标签: html validation jsf page-refresh

我正在努力学习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>

我的问题是,当我点击提交按钮而不填写名称字段时,我收到错误消息。但是当我刷新页面时,错误消息仍然存在。它为什么不消失?我怎么能让它消失?

1 个答案:

答案 0 :(得分:3)

您正在刷新表单提交。因此,表单将再次提交和验证。一个有点理智的浏览器会显示一个警告,如“您确定要重新发送帖子数据吗?”。你没见过这个吗?

在任何情况下,我都不确定你期望什么,因为这在同步POST表单上是完全自然的标准HTML / webbrowser行为(因此与JSF完全无关,因为它只是在这个“问题”的上下文中)一个HTML代码生成器),但如果你想避免在刷新POST请求时重新执行POST请求,那么最简单的方法是使它成为异步POST请求(通过ajax)而不是同步请求。这是一个嵌套的问题

<f:ajax execute="@form" render="@form" />

<h:commandButton>内。浏览器刷新仅刷新上一个同步请求,然后该请求将成为初始GET请求。