jsf 中 ViewExpiredException 的处理
来源:互联网 发布:mac os 安全模式 编辑:程序博客网 时间:2024/06/08 20:12
在jsf 中,存在 session 的地方,一般会去使用session 去保存数据或者其他的事情,但是当session time out or forced to be invalidate , 就会抛出这样的 ViewExpiredException 异常。
如果是 web server == sun app server
then solution is ::
in web.xml :
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/sessionExpired.jsp</location>
</error-page>
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">
<%@include file="/WEB-INF/jspf/taglibs.jspf" %>
<c:redirect url="/login.jsf" />
but if in tomcat container ,the solution is some complicated :
package trackingmap;
import com.sun.faces.lifecycle.LifecycleImpl;
import javax.faces.FacesException;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author zhenggp
*/
public class TeleLifecycleImpl extends LifecycleImpl{
/** Creates a new instance of TeleLifecycleImpl */
public TeleLifecycleImpl() {
super();
}
public void execute(FacesContext context) throws FacesException{
try{
super.execute(context);
}catch(javax.faces.application.ViewExpiredException e){
System.out.println("catch ViewExpiredException here");
try{
context.responseComplete();
context.renderResponse();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
String url = context.getExternalContext().getRequestContextPath() + "/faces/Login.jsp";///sessionExpired.jsp";
response.sendRedirect(url);
}catch(Exception e1){
System.out.println("url redirect wrong ");
}
//throw e;
}catch(FacesException ex){
throw ex;
}
}
}
package trackingmap;
import com.sun.faces.lifecycle.LifecycleFactoryImpl;
import javax.faces.lifecycle.Lifecycle;
/**
*
* @author zhenggp
*/
public class TeleLifecycleFactoryImpl extends LifecycleFactoryImpl {
public final static String CUSTOM_LIFECYCLE = "TELEEPOCH";
/** Creates a new instance of TeleLifecycleFactoryImpl */
public TeleLifecycleFactoryImpl() {
addLifecycle(CUSTOM_LIFECYCLE,new TeleLifecycleImpl());
}
}
add into faces-config.xml :
<factory>
<lifecycle-factory>trackingmap.TeleLifecycleFactoryImpl</lifecycle-factory>
</factory>
also add into web.xml
<context-param>
<param-name>javax.faces.LIFECYCLE_ID</param-name>
<param-value>TELEEPOCH</param-value>
</context-param>
- jsf 中 ViewExpiredException 的处理
- jsf 中 ViewExpiredException 的处理
- jsf 中 ViewExpiredException 的处理
- JSF的ViewExpiredException异常处理 视图没有存储的异常
- JSF、Facelets中添加RICH FACE导致ViewExpiredException的问题
- 如何避免jsf ViewExpiredException
- 解决问题(六)——jsf ViewExpiredException
- javax.faces.application.ViewExpiredException的解决方案
- 如何在JSF中处理转义字符?
- jsf中 binging的用法
- JSF中facelets的使用以及JSF国际化问题
- JSF教程(6)——生命周期中处理请求
- JSF中Backing Bean的管理
- 在 JSF中JSP扮演的角色
- JSF框架中使用的设计模式
- JSF的中文化与国际化
- JSF中分页的实现方式
- 在 JSF中JSP扮演的角色
- c++ 练习
- 如何避免面试失败(1)
- 解决Android Graphical Layout 界面效果不显示
- j ava中Integer对象和int的区别
- C语言运算符优先级和口诀助记
- jsf 中 ViewExpiredException 的处理
- iOS(iPhone/iPad) 屏幕旋转响应函数的缺点与窗口大小位置调整,以及解决办法
- hdu1850
- Myeclipse 很多标签都有警告
- gnu-ucos 的s3c2440处理器 中断部分
- [QT4]动态对话框和Qt设计师
- 当浏览不存在的页面时,系统会报404错误,返回的404错误不友好,如何自定义与中不同的404页面?
- 如何避免面试失败(2)
- Git图形工具的配置