0

我有一个 JSF 页面,如果他空闲了一段时间,就会出现一个弹出窗口。3 分钟 10 分钟等 如果他空闲了一段时间,确认对话框会出现一条消息 - “您的会话已过期。” 和一个命令按钮 id="quitConfirm" OK

单击按钮 ID 后,它会重定向到主页或您提到的任何路径

为了测试这一点,我将它部署在我的本地 weblogic 服务器中,并在等待 4 分钟左右后单击命令按钮 OK,它按预期重定向。

问题-

在大约 1 小时的等待时间后,单击命令按钮,它什么也没做
它不重定向/什么也不做。

没有更改代码中的任何内容,只需等待 30 分钟或一个小时。

实际功能

即使经过较长时间,它也应该重定向。我的意思是弹出对话框可以在 3 分钟后出现,但如果你在一个小时左右后点击它,它应该会重定向。

可重现的代码 -

<ui:composition  xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">

   <h:panelGrid>
          <p:column>   
              <h:outputText id="bankwithdrawid"  />
                 <h:form  prependId="false">
                        <h:commandButton value="Expired" id="submit" type="submit" title="Click here to Restart" action="#{expiredMB.logout}"/>
                        <p:idleMonitor timeout="9000">
                            <p:ajax event="idle" onstart="PF('sessionTimout').show()"  />
                        </p:idleMonitor> 
                        <p:confirmDialog showEffect="fade" hideEffect="explode"
                                message="Your session has expired."
                                header="Session Timeout " widgetVar="sessionTimout" appendTo="@(body)">
                            <p:commandButton id="quitConfirm" value="OK" action="#{expiredMB.logout}" process="@this" onclick="PF('sessionTimout').hide()" />
                        </p:confirmDialog>
                </h:form>

          </p:column>
   </h:panelGrid>

 </ui:composition>   

Java bean 已过期MB

public class ExpiredMB {

private static final Logger logger = LoggerFactory
        .getLogger(ExpiredMB.class);

public void logout() {
    ExternalContext ectx = FacesContext.getCurrentInstance()
            .getExternalContext();
    ectx.getSessionMap().clear();
    ectx.invalidateSession();
    try {
        ectx.redirect("/security/home.do?submit=Log In");
    } catch (IOException e) {
        logger.error("Problem with login." + e.getMessage());
    }
}

}
4

0 回答 0