0

我正在努力学习 JSF。

我有一个带有注释@ManagedBean @RequestScoped 的简单Hello.java ...

在 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>

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

4

1 回答 1

3

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

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

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

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

于 2013-02-24T11:46:04.580 回答