`
liyanhui
  • 浏览: 349394 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSF-javax.faces.application.ViewExpiredException:

    博客分类:
  • JSF
阅读更多

javax.servlet.ServletException: viewId:/login.jsp - View /login.jsp could not be restored. javax.faces.webapp.FacesServlet.service(FacesServlet.java:249) root cause javax.faces.application.ViewExpiredException: viewId:/login.jsp - View /login.jsp could not be restored. com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:185) com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

出现这个错误是因为session 超时。当然关掉页面重新打开就不会有这个问题,但是在可用性方面就很差。作为开发人员看见这个错误会知道为什么,普通浏览者肯定会觉得出了什么问题。所以还是解决一下好。

如果是 sun appplication server

解决办法是在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">
<%@ taglib uri="http://java.sun.com/jstl/ core" prefix="c"%>
<c:redirect url="/login.jsf" />

如果web容器是tomcat,解决办法如下:

package com.jsf.util;

import javax.faces.FacesException;
import javax.faces.application.ViewExpiredException;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;

import com.sun.faces.lifecycle.LifecycleImpl;

public class TeleLifecycleImpl extends LifecycleImpl
{
 public TeleLifecycleImpl()
 {
  super();
 }
 
 public void execute(FacesContext context)
 {
  try
  {
   super.execute(context);
  }
  catch (ViewExpiredException  vee)
  {
   redirect(context);
  }
  catch (FacesException fe)
  {
   throw fe;
  }
 }
 
 private void redirect(FacesContext context)
 {
  try
  {
   context.responseComplete();
   context.renderResponse();
   HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
   String url = context.getExternalContext().getRequestContextPath() + "/faces/error.jsp";
   response.sendRedirect(url);
  }
  catch (Exception e)
  {
   System.out.println("url redirect wrong ");
  }

 }
}

 在jsf配置文件 faces-config.xml 中添加如下内容

<factory>
     <lifecycle-factory>trackingmap.TeleLifecycleFactoryImpl</lifecycle-factory>
</factory>

在web.xml 中添加如下内容

<context-param>
     <param-name>javax.faces.LIFECYCLE_ID</param-name>
     <param-value>TELEEPOCH</param-value>
</context-param>

分享到:
评论
4 楼 drr 2010-10-22  
在TeleLifecycleFactoryImpl()中加入addLifecycle("", lc)方法, arg0 - TELEEPOCH就是<context-param>里的,另一个是TeleLifecycleImpl.
3 楼 shootboss 2010-03-26  
TeleLifecycleFactoryImpl请问这个类是怎么写的啊?
2 楼 zweichxu 2010-03-23  
两个问题:

1. 在jsf配置文件 faces-config.xml 注册的trackingmap.TeleLifecycleFactoryImpl类如何实现的?能不能简单描述下

2. web.xml 中的内容中,param-value值TELEEPOCH是什么意思?
1 楼 will-vip 2009-09-11  
3Q,我刚好要解决这个问题。

相关推荐

    jsf必需的jar包

    在这个库中,你可以找到诸如`javax.faces.FactoryFinder`、`javax.faces.application.Application`、`javax.faces.component.UIComponent`以及问题描述中提到的`javax.faces.*`类。这些类允许开发者创建、管理、以及...

    JSF-Java-jar包

    - `javax.faces.application.Application`:负责管理组件树、转换和验证规则、导航规则等。 - `javax.faces.component.UIComponent`:表示JSF组件树中的一个节点,是所有JSF组件的基类。 - `javax.faces.context....

    IDEA创建JSF项目所需jar包.zip

    在JavaServer Faces (JSF) 开发环境中,IntelliJ IDEA (IDEA) 是一个流行的集成开发环境。...理解并熟练运用javax.faces.jar和javax-inject.jar中的组件和服务,对于提升JSF应用的开发效率和质量至关重要。

    javaee jsf-api

    例如,`javax.faces.component.UIComponent`是所有JSF组件的基类,而`javax.faces.application.Application`接口则代表JSF应用程序的核心服务。此外,`javax.faces.context.FacesContext`是JSF框架与当前请求之间...

    Java Server Faces API 组件标签 API Reference 速查手册

    javax.faces.Command javax.faces.Button javax.faces.Link javax.faces.Data javax.faces.Table javax.faces.Form javax.faces.Form javax.faces.Graphic javax.faces.Image javax.faces.Input javax.faces....

    jsf开发需要的相关jar包

    例如,你可以在这个API中找到`javax.faces.component.UIComponent`,它是所有JSF组件的基类,还有`javax.faces.application.Application`,它代表了整个JSF应用的上下文。 而`jsf-impl.jar`文件则提供了JSF API的...

    开发JSF所需要的jar包

    例如,`javax.faces.component.UIComponent`是所有JSF组件的基类,而`javax.faces.application.Application`则提供了对整个应用程序的访问。 2. **JSF Implementations JAR**: 如MyFaces或Mojarra,是JSF规范的...

    jsf api文档

    - `javax.faces.application.Application`: 应用程序的上下文,管理组件、转换器、验证器等。 - `javax.faces.component.UIComponent`: 表示UI组件的基本类,所有JSF组件的基类。 - `javax.faces.context....

    jsf 详细 原理介绍 内容讲解

    核心API包括多个包,如`javax.faces`、`javax.faces.application`、`javax.faces.component`等,它们提供了框架的基础构建块。 2. **JSF核心包**: - **javax.faces**:基础包,包含工厂对象和异常处理。`...

    javaee API

    javax.faces.application APIs that are used to link an application's business logic objects to JavaServer Faces, as well as convenient pluggable mechanisms to manage the execution of an application ...

    jsf 2.0(jar+源码+api+新特性示例)

    1. `javax.faces.application.Application`:管理组件、转换器、验证器和事件处理器。 2. `javax.faces.context.FacesContext`:提供对当前请求和响应的访问,以及对JSF环境的其他信息。 3. `javax.faces.component....

    jsf 2.1 api和imp的jar包+源码包+doc

    例如,`javax.faces.component.UIComponent`是所有JSF组件的基类,`javax.faces.application.Application`负责管理组件、转换器、验证器和导航规则。 **JSF 2.1 Impl Jar包** Impl Jar包提供了JSF 2.1 API的具体...

    jsfapi.rar

    JSF支持多语言应用,通过`javax.faces.application.Application`的`getResourceBundle()`方法获取特定语言的资源包。开发者可以使用`.properties`文件来定义不同语言的文本资源。 **8. JSF与Ajax** JSF 2.0引入了...

    Linux 下整合 weblogic12c jsf1.2 Hibernate3

    &lt;prefer-application-packages&gt; &lt;package-name&gt;javax.faces.*&lt;/package-name&gt; &lt;package-name&gt;com.sun.faces.*&lt;/package-name&gt; &lt;package-name&gt;com.bea.faces.*&lt;/package-name&gt; &lt;/prefer-application-packages&gt; ...

    JSF帮助文档

    例如,`javax.faces.component.UIComponent`是所有JSF UI组件的基类,`javax.faces.application.Application`是处理应用程序范围配置和资源的入口点,`javax.faces.context.FacesContext`则封装了当前请求的所有上...

    Simple JSF application with RichFaces

    本文档旨在指导开发者如何构建一个简单的JavaServer Faces (JSF) 应用,并在其中集成RichFaces组件库。RichFaces是一个功能强大的开源框架,提供了丰富的Ajax支持组件,使得开发者能够轻松地构建出用户交互性强且...

    JSF+Spring+Hibernate 配置

    JavaServer Faces (JSF)、Spring 和 Hibernate 是 Java 开发中常用的三个框架,它们各自负责 Web 应用的不同层面:JSF 处理用户界面,Spring 提供依赖注入和业务层管理,而 Hibernate 负责对象关系映射(ORM)。...

    JSF2.0实战 - 1-3、Hello World,AJAX体验,onPageLoad

    在本课程中,我们将深入探讨JavaServer Faces (JSF) 2.0的实战应用,主要关注"Hello World"程序的实现,以及AJAX(异步JavaScript和XML)功能的体验,同时也会介绍`onPageLoad`事件的处理。JSF是一种用于构建Web应用...

Global site tag (gtag.js) - Google Analytics