Vee*_*era 18 java session jsf servlet-filters viewexpiredexception
这个问题与我的另一个问题" 如何在Java Web应用程序中过期会话时重定向到登录页面? "有关.以下是我正在尝试做的事情:
现在面临着我所面临的挑战.由于我正在使用JBoss AS,当会话到期时,JBoss会自动将我重定向到登录页面(请注意,不会调用会话到期检查过滤器).因此,在我登录后,我的SessionExpiryCheckFilter拦截了请求,并且它看到会话可用.但是,它抛出异常javax.faces.application.ViewExpiredException: viewId:/mypage.faces - View /mypage.faces could not be restored.
以前有人遇到过这个问题吗?有什么想法可以解决这个问题?
Chr*_*ale 14
以下方法适用于我.请注意,您必须使用JSTL核心taglib重定向而不是jsp重定向才能使其正常工作(因为jsp也会过期).
在FacesConfig.xml中,您输入以下内容:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/sessionExpired.jsf</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
sessionExpired.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:redirect url="/login.jsf" />
Run Code Online (Sandbox Code Playgroud)
您还可以将此方法用于其他错误类型或异常.例如,元素包含错误代码或异常类型与Web应用程序中资源路径之间的映射:
<error-page>
<error-code>400</error-code>
<location>/400.html</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
或element包含Java异常类型的完全限定类名.
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/servlet/ErrorDisplay</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41529 次 |
| 最近记录: |