Jsf Omnifaces在sessiontimeout之后调用unload throught Jaas,结果是白屏空结果

Jsf Omnifaces在sessiontimeout之后调用unload throught Jaas,结果是白屏空结果,jsf,wildfly,session-timeout,jaas,omnifaces,Jsf,Wildfly,Session Timeout,Jaas,Omnifaces,我不知道背景到底是什么,我想知道:) 复制步骤: 获取主页 Jaas重定向到登录页面 登录 降落在一个有状态的页面上 等待会话超时 刷新页面 Jaas重定向到登录页面 登录 降落在白色屏幕上。(但重新加载后一切正常!) 通过调试,我注意到,第二次登录后卸载 private UIViewRoot unloadView(FacesContext context, String viewId) { UIViewRoot createdView = createView(con

我不知道背景到底是什么,我想知道:)

复制步骤:

  • 获取主页

  • Jaas重定向到登录页面

  • 登录

  • 降落在一个有状态的页面上

  • 等待会话超时

  • 刷新页面

  • Jaas重定向到登录页面

  • 登录

  • 降落在白色屏幕上。(但重新加载后一切正常!)

  • 通过调试,我注意到,第二次登录后卸载

    private UIViewRoot unloadView(FacesContext context, String viewId) {
        UIViewRoot createdView = createView(context, viewId);
        ResponseStateManager manager = getRenderKit(context).getResponseStateManager();
    
        if (restoreViewRootState(context, manager, createdView)) {
            context.setProcessingEvents(true);
            context.getApplication().publishEvent(context, PreDestroyViewMapEvent.class, UIViewRoot.class, createdView);
            Hacks.removeViewState(context, manager, viewId);
        }
        else if (isSessionNew(context)) {
            redirectPermanent(context, getRequestURIWithQueryString(context));
        }
    
        responseComplete();   // This row return with empty page
        return createdView;
    }
    
    我想第二次卸载帖子是被JAAS抓到的,而不是页面GET。 但我不知道为什么


    谢谢你的回答

    我的解决方案在客户端。有一个JS方法,它正好在sessiontimeout之后调用

    我将这一行放在该方法中:

    OmniFaces.Unload.disable();