如果jsf应用程序中发生会话超时,如何重定向到索引页

如果jsf应用程序中发生会话超时,如何重定向到索引页,jsf,Jsf,我使用的是JSFRI1.1。如果会话超时,如何重定向到索引页?您可以使用过滤器捕获指示超时的特定异常,然后从那里重定向。有两种方法可以组合使用: 在HTML元素中使用刷新头,与之结合使用,返回会话尚未激活的剩余秒数 <meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf"> 当会话过期时,当发出POST请求(h:commandButton,h:comma

我使用的是JSFRI1.1。如果会话超时,如何重定向到索引页?

您可以使用
过滤器捕获指示超时的特定异常,然后从那里重定向。

有两种方法可以组合使用:

  • 在HTML
    元素中使用
    刷新头,与之结合使用,返回会话尚未激活的剩余秒数

    <meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf">
    
    当会话过期时,当发出
    POST
    请求(
    h:commandButton
    h:commandLink
    等)时,此方法将自动将请求转发给给定的

  • 请注意,我个人更喜欢中间的“会话过期”警告页面或警报,以避免“wtf?”体验,从而改善用户体验。更重要的是,当客户端通过收听
    点击
    按键
    显示活动时,我更愿意每分钟启动一次ajaxical轮询,这样会话的生命周期就可以推迟得更多。

    <meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>
    
    
    
    @Paul如果你尝试了,并且成功了,请确保你将答案标记为已接受(其他问题也是如此)。通过计票台下方的勾号进行评分。您可以发布解决方案吗?为什么我要这么做,这绝对不起作用。我使用内置的myfaces机制来实现这一点,但是错误页面是一个非常好的方法。嗨,BalusC,这是一个轴向的可能,我们可以在jsf 1.1中使用Ajax吗。如果是,如何将ajaxical设置为延迟的会话生存期。只需在执行
    请求的相同上下文/会话中使用JavaScript/jQuery和一个简单的servlet。getSession()
    。我之前在这里发布了一个例子:如果使用最新的facelets。改用#{session.maxInactiveInterval}。
    <meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>