我有很多输入字段,用户必须填写一些数据。当他完成后,他点击
<p:commandButton widgetVar="submitButton" async="true" value="submit" action="#{bean.storeToDB}" />
public String submit(){
//check if session is invalid:
if(exclusiveTimeHasPassed()){
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Error", "Your session is not valid anymore. Please reload the page"));
return null; //should stay on the page without losing all data
}
}
现在我检查storeToDB()的最开头,如果&#34; session&#34;已经&#34; time-outed&#34;与此同时(每个用户都有10分钟的时间进行他的投入)
如果会话有时间,他应该收到一条消息()(不会丢失所有输入),以便显示咆哮消息。
如何实现growl消息显示然后nagivation case返回null(重新加载页面)?
答案 0 :(得分:0)
也许你可以使用primefaces idleMonitor组件。有一个例子here。 在这种情况下,咆哮将在10分钟后显示,你可以触发任何动作。
<p:growl id="messages" showDetail="true" sticky="true" />
<p:idleMonitor timeout="600000">
<p:ajax event="idle" listener="#{idleMonitorController.idleListener}" update="messages" />
<p:ajax event="active" listener="#{idleMonitorController.activeListener}" update="messages" />
</p:idleMonitor>
答案 1 :(得分:0)
return null;
不应刷新页面,但如果它适合您,您可以执行以下操作:
如果您仍想在其他地方导航,请使用以下代码:
FacesContext.getCurrentInstance()。getApplication()。getNavigationHandler()。handleNavigation(FacesContext.getCurrentInstance(),null,outCome);
但是。如果用户的会话已过期,则无法更新当前视图,您将拥有一个新创建的视图。