Problema com JSF : ViewExpiredException

Boa noite pessoal,
estou com um problema estranho tentando executar uma aplicação simples com JSF 1.2 e Tomcat 6.0.8. Eu criei um novo Dynamic Web Project no Eclipse e uma página simples de teste de envio com um campo apenas:

listaPessoa.jsp

[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
<%@taglib prefix=“f” uri=“http://java.sun.com/jsf/core”%>
<%@taglib prefix=“h” uri=“http://java.sun.com/jsf/html”%>
<%@taglib prefix=“a4j” uri=“http://richfaces.org/a4j”%>
<%@taglib prefix=“rich” uri=“http://richfaces.org/rich”%>

Insert title here
<h:form id="formAdicionar">
	<h:outputText value="Nome: " />
	<h:inputText id="nome" value="#{pessoaList.nome}" size="30">
		<f:validateLength minimum="3" />			
	</h:inputText>
			
	<h:panelGroup id="p_nome">
		<h:message for="nome" />
	</h:panelGroup>

	<h:commandButton action="lala" value="Teste" />

</h:form>

</f:view>

[/code]

Após iniciar a aplicação eu entro nesta página (listaPessoa.jsp) sem problemas, mas no momento em que submeto o form a seguinte exceção é lançada:

[code]exception

javax.servlet.ServletException: viewId:/listaPessoa.jsf - View /listaPessoa.jsf could not be restored.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:323)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)

root cause

javax.faces.application.ViewExpiredException: viewId:/listaPessoa.jsf - View /listaPessoa.jsf could not be restored.
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:208)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:102)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
[/code]

É algo estranho tendo em vista que foi realizada na primeira submissão e não houve tempo algum para expirar a sessão.
Procurei este erro em diversos lugares, inclusive em um post aqui do guj: http://www.guj.com.br/posts/list/0/85236.java#460553

Verifiquei que quando eu mudo o State Saving Method pra “client” o problema desaparece e a aplicação funciona sem problemas, porém não intendi porque e não gostaria de ter que deixar desta maneira. Existe alguma forma de deixar o State Saving no servidor?

Aqui vão meu faces-config e web.xml:

web.xml:

[code]<?xml version="1.0" encoding="UTF-8"?>

ProjetoDinamicoWeb

index.html
index.htm
index.jsp
default.html
default.htm
default.jsp


Faces Servlet
javax.faces.webapp.FacesServlet
1

javax.faces.STATE_SAVING_METHOD server Faces Servlet *.jsf RichFaces Filter richfaces org.ajax4jsf.Filter richfaces Faces Servlet REQUEST FORWARD INCLUDE FirstServlet FirstServlet FirstServlet FirstServlet /FirstServlet org.richfaces.SKIN ruby com.sun.faces.numberOfViewsInSession 100 org.richfaces.CONTROL_SKINNING enable

[/code]

Faces-Config:

<?xml version="1.0" encoding="UTF-8"?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> <managed-bean> <managed-bean-name>pessoaList</managed-bean-name> <managed-bean-class>br.com.loja.PessoaList</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>pessoaNova</property-name> <property-class>br.com.basicas.Pessoa</property-class> <value>#{pessoa}</value> </managed-property> </managed-bean> <managed-bean> <managed-bean-name>pessoa</managed-bean-name> <managed-bean-class>br.com.basicas.Pessoa</managed-bean-class> <managed-bean-scope>none</managed-bean-scope> </managed-bean> <navigation-rule> <from-view-id>/listaPessoa.jsp</from-view-id> <navigation-case> <from-outcome>lala</from-outcome> <to-view-id>/pagina.jsp</to-view-id> </navigation-case> </navigation-rule> </faces-config>

Ps: Tentei retirar o rich faces pra saber se ele estava causando o problema mas o erro continuou da mesma maneira.

Obrigado

pois é, eu uso com o State Saving Method setado para server.

eu uso praticamente sempre esse web.xml, tem facelets junto, mas é so ignora a parte do facelets…

[code]<?xml version="1.0" encoding="UTF-8"?>

educaWeb


com.sun.faces.config.ConfigureListener

<!-- facelets -->
<context-param>
  <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  <param-value>.xhtml</param-value>
 </context-param>
 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>server</param-value>
 </context-param>
 <context-param>
  <param-name>facelets.REFRESH_PERIOD</param-name>
  <param-value>2</param-value>
 </context-param>
 <context-param>
  <param-name>facelets.DEVELOPMENT</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>com.sun.faces.validateXml</param-name>
  <param-value>false</param-value>
 </context-param>
 <context-param>
  <param-name>com.sun.faces.verifyObjects</param-name>
  <param-value>false</param-value>
 </context-param>
 
  <!-- RichFaces -->
<!-- escolhe a skin -->
 <context-param>
  <param-name>org.richfaces.SKIN</param-name>
  <param-value>blueSky</param-value>
 </context-param>
 <!-- aplica skin em todo projeto --> 
 <context-param>
  <param-name>org.richfaces.CONTROL_SKINNING</param-name>
  <param-value>enable</param-value>
 </context-param>
 
 <!-- facelets com richfaces -->
 <context-param>
  <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  <param-value>com.sun.facelets.FaceletViewHandler</param-value>
 </context-param>

 <!--diz a aplicação onde esta o arquivo de configuração do spring-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

<!-- filtro richfaces -->
 <filter>
  <display-name>RichFaces Filter</display-name>
  <filter-name>richfaces</filter-name>
  <filter-class>org.ajax4jsf.Filter</filter-class>
 </filter>
 

 <!-- richfaces -->
  <filter-mapping>
	  <filter-name>richfaces</filter-name>
	  <servlet-name>Faces Servlet</servlet-name>
	  <dispatcher>REQUEST</dispatcher>
	  <dispatcher>FORWARD</dispatcher>
	  <dispatcher>INCLUDE</dispatcher>
 </filter-mapping>
 
 <!-- listener obrigatoria do spring-->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
 

 
<servlet>
	  <servlet-name>Faces Servlet</servlet-name>
	  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
	  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
	  <servlet-name>Faces Servlet</servlet-name>
	  <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>


<welcome-file-list>
	<welcome-file>index.html</welcome-file>
</welcome-file-list>	

[/code]

talvez se vc atualizar os jars do jsf, talvez procurar se existe alguma atualização pro container q vc ta usando …
a propria ide talvez(acho mto dificil)…

sei la :stuck_out_tongue:

ps: o web.xml tem spring junto … mas é so ignora tb :stuck_out_tongue: