jsf-用户离开页面时拦截

jsf-用户离开页面时拦截,jsf,page-lifecycle,Jsf,Page Lifecycle,我在JSF应用程序中有以下3个简单页面 index.html start.html confirmSuccess.thml html是一个简单的表单,有一个“GO!”按钮和一个返回index.html的html链接。当用户点击GO!它在支持bean中启动事务。如果失败,我希望重新显示start.html表单,但会出现解释失败的错误。因此,我在支持bean中设置了一个错误标志,并且使用rendered=”“属性管理错误显示 很简单,对吧 那么,我如何处理这样的情况:用户然后单击指向index.h

我在JSF应用程序中有以下3个简单页面

index.html
start.html
confirmSuccess.thml
html是一个简单的表单,有一个“GO!”按钮和一个返回index.html的html链接。当用户点击GO!它在支持bean中启动事务。如果失败,我希望重新显示start.html表单,但会出现解释失败的错误。因此,我在支持bean中设置了一个错误标志,并且使用rendered=”“属性管理错误显示

很简单,对吧

那么,我如何处理这样的情况:用户然后单击指向index.html的html链接,然后从index.html单击返回到start.html的链接,或者简单地单击返回。也就是说,我如何清除截取用户已离开起始页,并清除错误标志,以便第二次知道我不需要显示错误

在不深入JSF生命周期管理的情况下,这是可能的吗


注意列出的3个页面是对我的webapp的过度简化,实际上,用户可以从start.html访问多个页面,因此,我不希望有一个解决方案需要跟踪某人到达的页面以清除开始标志。

听起来像是在会话范围的bean中传输请求范围的数据。使保存请求范围数据的beanrequest范围化,并指示浏览器访问动态页面,以便强制它从Web服务器而不是从其历史重新请求页面

也就是说,我宁愿使用和的组合来显示错误。您可以使用
null
clientId
来表示全局消息。反过来,它们已经基于请求,因此您不需要麻烦使用标志来呈现/取消呈现错误显示

例如


听起来像是在会话范围的bean中传输请求范围的数据。使保存请求范围数据的beanrequest范围化,并指示浏览器访问动态页面,以便强制它从Web服务器而不是从其历史重新请求页面

也就是说,我宁愿使用和的组合来显示错误。您可以使用
null
clientId
来表示全局消息。反过来,它们已经基于请求,因此您不需要麻烦使用标志来呈现/取消呈现错误显示

例如



谢谢-关于请求/会话范围的根本原因,您是对的。无论如何,我会支持这个想法。谢谢-关于请求/会话范围的根本原因,你是对的。无论如何,我会赞成这个主意。
public void submit() {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Error!"));
}
<h:messages globalOnly="true" />