当导航返回null时,JSF保持在同一页面上

时间:2014-04-21 11:03:20

标签: jsf primefaces navigation growl

我有很多输入字段,用户必须填写一些数据。当他完成后,他点击

<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(重新加载页面)?

2 个答案:

答案 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);

但是。如果用户的会话已过期,则无法更新当前视图,您将拥有一个新创建的视图。