【问题标题】:viewExpiredException JSF [duplicate]viewExpiredException JSF [重复]
【发布时间】:2011-01-08 00:17:39
【问题描述】:

为了在 JSF 中处理 viewExpiredException,我编写了代码

<error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/error.html</location>
</error-page>

<session-config>
    <session-timeout>1</session-timeout>
</session-config>

web.xml.

error.html 我已重定向到原始登录页面。但问题是会话范围的 bean 即使会话过期也没有被清除。有没有办法解决这个问题?

【问题讨论】:

    标签: java session jsf viewexpiredexception


    【解决方案1】:

    登录页面可能是从浏览器缓存中请求的。通过创建一个与FacesServlet 绑定的Filter 禁用它,并且在doFilter() 方法中基本上具有以下几行,这样您就不需要在您想要阻止的所有页面上重复它正在缓存中。

    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
    response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
    response.setDateHeader("Expires", 0); // Proxies.
    

    【讨论】:

    • 如果我使用 Facelets 并且有固定的布局,在标题或过滤器中设置它有什么区别吗?
    • @Rin:不,绝对没有区别。您只需要记住 HTTP 响应标头始终优先于 meta.xml 中设置的标头。因此,如果服务器在 HTTP 响应标头中设置了一些默认值,那么它们将覆盖您在 meta.xml 中设置的默认值。另见stackoverflow.com/questions/49547/…stackoverflow.com/questions/10305718/…
    • 对不起,忘了谢谢。 :) 很有启发性;
    猜你喜欢
    • 2011-03-18
    • 2011-10-05
    • 2012-09-04
    • 2016-01-13
    • 2012-01-08
    • 2011-02-28
    • 2014-12-22
    • 2012-01-09
    • 2015-05-08
    相关资源
    最近更新 更多