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>
分享到:
相关推荐
在这个库中,你可以找到诸如`javax.faces.FactoryFinder`、`javax.faces.application.Application`、`javax.faces.component.UIComponent`以及问题描述中提到的`javax.faces.*`类。这些类允许开发者创建、管理、以及...
- `javax.faces.application.Application`:负责管理组件树、转换和验证规则、导航规则等。 - `javax.faces.component.UIComponent`:表示JSF组件树中的一个节点,是所有JSF组件的基类。 - `javax.faces.context....
在JavaServer Faces (JSF) 开发环境中,IntelliJ IDEA (IDEA) 是一个流行的集成开发环境。...理解并熟练运用javax.faces.jar和javax-inject.jar中的组件和服务,对于提升JSF应用的开发效率和质量至关重要。
例如,`javax.faces.component.UIComponent`是所有JSF组件的基类,而`javax.faces.application.Application`接口则代表JSF应用程序的核心服务。此外,`javax.faces.context.FacesContext`是JSF框架与当前请求之间...
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....
例如,你可以在这个API中找到`javax.faces.component.UIComponent`,它是所有JSF组件的基类,还有`javax.faces.application.Application`,它代表了整个JSF应用的上下文。 而`jsf-impl.jar`文件则提供了JSF API的...
例如,`javax.faces.component.UIComponent`是所有JSF组件的基类,而`javax.faces.application.Application`则提供了对整个应用程序的访问。 2. **JSF Implementations JAR**: 如MyFaces或Mojarra,是JSF规范的...
- `javax.faces.application.Application`: 应用程序的上下文,管理组件、转换器、验证器等。 - `javax.faces.component.UIComponent`: 表示UI组件的基本类,所有JSF组件的基类。 - `javax.faces.context....
核心API包括多个包,如`javax.faces`、`javax.faces.application`、`javax.faces.component`等,它们提供了框架的基础构建块。 2. **JSF核心包**: - **javax.faces**:基础包,包含工厂对象和异常处理。`...
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 ...
1. `javax.faces.application.Application`:管理组件、转换器、验证器和事件处理器。 2. `javax.faces.context.FacesContext`:提供对当前请求和响应的访问,以及对JSF环境的其他信息。 3. `javax.faces.component....
例如,`javax.faces.component.UIComponent`是所有JSF组件的基类,`javax.faces.application.Application`负责管理组件、转换器、验证器和导航规则。 **JSF 2.1 Impl Jar包** Impl Jar包提供了JSF 2.1 API的具体...
JSF支持多语言应用,通过`javax.faces.application.Application`的`getResourceBundle()`方法获取特定语言的资源包。开发者可以使用`.properties`文件来定义不同语言的文本资源。 **8. JSF与Ajax** JSF 2.0引入了...
<prefer-application-packages> <package-name>javax.faces.*</package-name> <package-name>com.sun.faces.*</package-name> <package-name>com.bea.faces.*</package-name> </prefer-application-packages> ...
例如,`javax.faces.component.UIComponent`是所有JSF UI组件的基类,`javax.faces.application.Application`是处理应用程序范围配置和资源的入口点,`javax.faces.context.FacesContext`则封装了当前请求的所有上...
本文档旨在指导开发者如何构建一个简单的JavaServer Faces (JSF) 应用,并在其中集成RichFaces组件库。RichFaces是一个功能强大的开源框架,提供了丰富的Ajax支持组件,使得开发者能够轻松地构建出用户交互性强且...
JavaServer Faces (JSF)、Spring 和 Hibernate 是 Java 开发中常用的三个框架,它们各自负责 Web 应用的不同层面:JSF 处理用户界面,Spring 提供依赖注入和业务层管理,而 Hibernate 负责对象关系映射(ORM)。...
在本课程中,我们将深入探讨JavaServer Faces (JSF) 2.0的实战应用,主要关注"Hello World"程序的实现,以及AJAX(异步JavaScript和XML)功能的体验,同时也会介绍`onPageLoad`事件的处理。JSF是一种用于构建Web应用...