我在JSF应用程序中有以下3个简单页面。
index.html
start.html
confirmSuccess.thml
start.html是一个简单的表单,带有“GO!”按钮和返回index.html的html链接。当用户点击GO!它在辅助bean中踢了一个事务。如果失败,我希望重新显示start.html表单,但是错误解释失败。所以,我在我的支持bean中设置了一个错误标志,并使用rendered =“”属性管理错误显示。
简单,对吧?
那么,我如何处理用户然后单击指向index.html的html链接的情况,并从index.html单击链接返回到start.html,或者只需单击回来。也就是说,如何清除用户已离开起始页面的拦截,并清除错误标志,以便我知道第二次,我不需要显示错误。
如果不深入了解JSF生命周期管理的内容,这是否可行?
注意列出的3个页面是对我的webapp的粗略过度简化,实际上,用户可以从start.html访问多个页面,所以我不希望有一个解决方案我需要跟踪有人到达的页面以清除标记以便开始。
答案 0 :(得分:1)
听起来像是在会话范围的bean中传输请求范围的数据。使持有请求作用域数据的bean 请求作用域并指示浏览器not cache动态页面,以便强制它从Web服务器而不是从其历史记录重新请求页面。
那就是说,我宁愿使用FacesContext#addMessage()
和<h:messages/>
的组合来显示错误。您可以使用clientId
null
来表示全局消息。它们已经基于请求,因此您无需使用标志来渲染/取消显示错误信息。
E.g。
public void submit() {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Error!"));
}
与
<h:messages globalOnly="true" />