`

jsf 中 ViewExpiredException 的处理

    博客分类:
  • JSF
阅读更多
在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>


in 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" />



在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 chenwq
 */
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 chenwq
 */
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>


1
0
分享到:
评论

相关推荐

    JSF中文教程jsf

    **事件处理** 在JSF中是通过事件监听器实现的。当用户与组件交互时,会触发特定的事件,相应的监听器方法会被调用,从而执行相应的处理逻辑。 **生命周期** 是JSF处理请求的关键过程,包括初始化、恢复视图、应用...

    JSF中文教程.zip

    5. **Managed Beans**:Managed Beans是JSF中的核心业务对象,它们存储和处理应用程序的数据。开发者可以定义Bean的属性、方法,并通过EL在Facelets视图中使用。 6. **生命周期**:JSF有七个阶段,包括恢复视图、...

    jsf中文使用教程jsf中文使用教程

    2. **Managed Bean**:Managed Bean是JSF中的核心组件,用来存储和处理数据。 3. **Navigation Handler**:负责处理页面间的跳转。 4. **Converter和Validator**:Converter转换数据类型,Validator验证用户输入。 ...

    精通JSF中文教程精通JSF中文教程

    Managed Beans是JSF中的核心概念,它们作为业务逻辑的载体,可以被JSF框架自动管理。开发者可以定义属性和方法,实现后端逻辑,并通过EL(Expression Language)在视图层与之交互。 **5. EL表达式** EL是一种简洁的...

    JSF中文问题解决方法完整版

    在IT行业中,JavaScript框架(JSF,JavaServer Faces)是一种广泛应用的用于构建Web应用程序的UI层技术。这篇博文“JSF中文问题解决方法完整版”提供了关于如何处理JSF框架在处理中文字符时可能出现的问题的解决方案...

    JSF帮助文档

    在这个过程中,JSF框架负责管理组件状态,处理用户事件,并与后端业务逻辑进行交互。 JSF提供了一种声明式编程模型,允许开发者通过XML配置文件(如faces-config.xml)来定义组件、导航规则和转换验证规则。此外,...

    JSF中文教程+JSF参数传递方式

    本教程将深入探讨JSF的核心概念以及如何在JSF应用中传递参数,帮助开发者更好地理解和掌握这一技术。 首先,让我们理解**JSF的基本架构**。JSF的核心组件包括视图、控制器和模型,它们共同构成了MVC(Model-View-...

    JSF如何监测和处理session超时

    总结来说,通过创建一个监听恢复视图阶段的`PhaseListener`,并捕获`ViewExpiredException`,我们可以有效地在JSF中处理会话超时。这不仅可以防止用户在不知情的情况下失去会话,还可以增强应用程序的安全性,确保...

    jsf 中文帮助文档

    例如,JSF中的数据绑定和事件处理机制都与Java的反射和事件监听器机制密切相关。 在JSF中,**组件树** 是一种核心概念,它是页面所有UI组件的逻辑表示。每个组件都有自己的属性和事件,可以通过EL(Expression ...

    JSF中使用BooleanCheckbox实现全选功能

    BooleanCheckbox是JSF中用于显示和处理布尔值(true或false)的组件,通常表现为复选框。 在实现全选功能时,我们通常会有一个主复选框,它的状态(选中或未选中)会影响到页面上所有关联的复选框。当主复选框被...

    JSF入门(中文pdf)

    在JSF中,UI组件(View)可以直接映射到后端的数据源(Model),并可以通过事件处理(Controller)进行交互。这使得开发者可以更专注于业务逻辑,而无需过多关注底层的HTTP通信细节。 首先,JSF的组件库是其一大...

    教程与手册(Dhtml手册、 JSF中文教程)

    手册中应该详细讲解了DHTML的基本概念、语法、事件处理以及如何创建交互式的网页元素,对于前端开发者来说是不可或缺的参考。 接着,"JSF中文教程"和"JSF API"是针对JavaServer Faces的学习资料。JSF是Java EE平台...

    JSF上传 JSF大文件上传 JSF上传代码 JSF上传源代码

    在这个项目中,开发者可能自定义了JSF的监听器和处理器,以处理文件上传事件。监听器会检测文件上传的开始和结束,而处理器则负责处理每个文件块的上传,并在所有块都成功上传后将它们合并成原始文件。这个过程可能...

    JSF包,jsf包,JSF包,jsf包

    3. **编写后台逻辑**:在Java类中实现业务逻辑,这些类可以是JSF Managed Beans,它们与视图进行交互,处理用户请求和数据操作。 4. **部署和测试**:将应用打包成WAR文件,部署到支持Java EE的服务器,如Tomcat、...

    JSF与hibernate整合的登陆

    JSF提供了组件库、事件处理机制和生命周期管理,允许开发者通过声明式的方式处理UI逻辑,降低了前端开发的复杂性。 **Hibernate** 是一个流行的Java持久化框架,用于管理和操作数据库。它提供了对象关系映射(ORM)...

    JSF的工作方式 JSF架构 JSF模型 JSF事件类型

    在JSF中,事件处理通常通过监听器(Listeners)和处理器(Action Methods)完成,这些可以在管理Bean中定义。监听器用于响应特定类型的事件,而处理器方法则执行与事件相关的操作。 ### JSF配置与导航 为了配置JSF...

    jsf中文教程.chm

    **FacesContext**是JSF的核心对象,它在整个JSF请求处理过程中起到桥梁的作用,连接了视图、模型和控制器。 **国际化与本地化**在JSF中也得到了很好的支持,开发者可以轻松地为应用程序添加多语言支持。 **JSF与...

    ajax4jsf中文用户指南

    **Ajax请求的发送**:在JSF页面中,你可以使用Ajax4JSF提供的组件,如`a4j:support`或`a4j:commandButton`,来触发Ajax请求。这些组件可以绑定到特定的事件,当事件发生时,会向服务器发送异步请求。 **决定发送...

    JSF生命周期的事件处理

    在深入了解JSF中的事件处理之前,我们先简要回顾一下JSF的生命周期,这对于理解后续的事件处理逻辑至关重要。JSF的生命周期分为以下五个主要阶段: 1. **恢复视图(Restore View)**:在这个阶段,JSF容器会根据...

Global site tag (gtag.js) - Google Analytics