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



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

<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()的一开始就检查"会话"在此期间是否有"超时"(每个用户有10分钟的时间进行输入)

如果会话已经超时,他应该得到一条消息()(不会丢失所有输入),以便显示咆哮消息。

如果nagivation案例返回null(重新加载页面),我如何才能显示咆哮消息?

也许您可以使用primefaces idleMonitor组件。这里有一个例子。在这种情况下,咆哮将在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>

return null;不应该刷新页面,但如果它为您刷新了,您可以做一个变通方法:

  • 修改您的方法以作废
  • 如果你仍然想在其他地方导航,请使用以下代码:

    FacesContext.getCurrentInstance().geApplication().getNavigationHandler().handleNavigation(FacesContext.getCurrentInstances(),null,outCome);

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

相关内容

  • 没有找到相关文章

最新更新