【发布时间】:2014-01-10 13:37:58
【问题描述】:
我在“createDbUser.xhtml”视图中有一个表单,其中包含一些输入文本和验证,如下所示:
<h:form>
<h:inputText id="user_name" value="#{dbUserManager.userName}" required="true" requiredMessage="User name is required." />
<h:inputSecret id="password" value="#{dbUserManager.password}" required="true" requiredMessage="Password is required." />
<h:commandButton id="create_user" value="Create user" action="#{dbUserManager.createUser()}" />
</h:form>
dbUserManger 是一个带有 createUser() 的 viewScoped 托管 bean,如下所示:
public String createUser()
{
...
// here I do some checks and add the new user to database
...
return "/restricted/createDbUser.xhtml?faces-redirect=true";
}
当我在某些验证失败时按下浏览器的刷新按钮(例如,我没有输入密码或用户名),我得到“确认表单重新提交”而不是预期的行为,即重新加载页面并清除输入.
我已经阅读了 post-redirect-get 模式,这就是为什么我将带有“faces-redirect=true”参数的 return 语句添加到 createuser() 的结果中。
我猜当验证失败时,我们永远不会到达 createuser() 并因此返回语句。这就是这个问题的原因。但是不知道怎么解决。
如果有人能帮助解决这个问题,那就太好了。
谢谢
【问题讨论】:
标签: validation jsf-2 page-refresh post-redirect-get