Submit h:commandButton

Feras

estou querendo dar um submit numa pagina xhtml porém quando clico no botão recebo o erro abaixo

alguém sabe o que pode ser ?

<td><h:commandButton value="Consultar" action="#{consultaMBean.filtro()}" id="btnConsultar"/></td>
javax.servlet.ServletException: viewId:/paginas/menu/menu.faces - View /paginas/menu/menu.faces não pode ser restaurada.
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:270)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.application.ViewExpiredException: viewId:/paginas/menu/menu.faces - View /paginas/menu/menu.faces não pode ser restaurada.
	at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:189)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:102)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	... 27 more
17:05:44,155 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
javax.faces.application.ViewExpiredException: viewId:/paginas/menu/menu.faces - View /paginas/menu/menu.faces não pode ser restaurada.
	at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:189)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:102)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Unknown Source)

Isso acontece ou pq você parou o servidor e iniciou novamente, ou então pq sua sessão expirou.

Ou vc não tem feito nenhum dos dois?

Isso acontece no momento em que eu aperto o botão dando um submit na pagina

conforme a linha com o botão acima

[quote=robsonsan]Isso acontece no momento em que eu aperto o botão dando um submit na pagina

conforme a linha com o botão acima[/quote]
Eu sei que foi quando você clicou no botão, mas você realizou alguma das ações que eu perguntei?

o Servidor eu paro e inicio a todo instante devido eu estar desenvolvendo a pagina.

Então é normal isso. Uma vez que você reiniciar os dados são perdidos.

O que você pode fazer e procurar no google por essa exception e como tratá-la. Tem vários tutoriais mostrando como tratar.

Acho que vc não entendeu meu problema…

estou dando um submit para passar os dados da minha tela para meu metodo que esta sendo chamado conforme mencionei la em cima

action="#{consultaMBean.filtro()}"

mas recebo o erro descrito

action="#{consultaMBean.filtro()}"

Teu servidor ta configurado pra entender isso?

Onde configuro meu servidor para entender isso

action="#{consultaMBean.filtro()}"

mas para matar a duvida tb tentei dessa forma e não funcionou tb

action="#{consultaMBean.filtro}"

Eu acho que você que não entendeu.

Você reparou que o erro só acontece quando você reinicia o servidor? Que se você iniciar todo o processo até chega na página tudo funciona normalmente?

Isso é um comportamento padrão do JSF, ele apaga os componentes da View que até então estavam salvos na memória.

Existe configuração para que o servidor salve no disco os componentes da View e que mesmo após reiniciar o servidor ele mantenha esses dados.

Por isso falei para você pesquisar no google que você vai achar essa e outras soluções, sendo uma delas, salvar os componentes na página do usuário e cada request esses componentes são enviados.

Cada abordagem tem sua vantagem e desvantagem.

Não sei qual é a configuração de cabeça. Por isso indiquei o google, ele sabe.[=

jakefrog

cara o servidor não tem que “guardar” as informações das outras paginas e digito no campo um valor

e quando eu der o submit nesse botão ele submeter esseas informações que foram digitadas

Acho que foi você que não me entendeu ainda…

Me responda:

  1. Esse erro acontece se você iniciar o processo desde a primeira página? Se funciona quando você faz o processo inteiro, pq só na hora que você reinicia o servidor dá o erro? Você não acha que existe algo relacionado aí?
  2. Esse erro acontece apenas quando você inicia o servidor? Você tinha me dito que era aí que o erro acontecia, estou apenas te mostrando um padrão.
  3. Se você logar um uma tab, ao abrir outra caso a sessão esteja compartilhada faça o seguinte teste. Efetue Logff e depois na primeira tab clique no botão, oq irá acontecer? Você irá ver o mesmo comportamento.

JSF precisa guardar a árvore de componentes. É assim que ele funciona.

Cabe a você decidir a estratégia. Google it.

Resposta:

  1. Esse erro acontece se você iniciar o processo desde a primeira página?
    Sim. Existe uma pagina index.html que quando eu chamo e redirecionado automaticamente para a pagina que tem campos onde eu preecho com informações
    quando eu clico no botão “cadastrar” e onde acontece o erro

Se funciona quando você faz o processo inteiro, pq só na hora que você reinicia o servidor dá o erro?
Nunca funciona a pagina que quando eu clico em “cadastrar” e o erro não aconrece quando eu reinicio o servidor

Você não acha que existe algo relacionado aí?
Não

  1. Esse erro acontece apenas quando você inicia o servidor?
    Não

Você tinha me dito que era aí que o erro acontecia, estou apenas te mostrando um padrão.
Ou eu me expressei errado ou vc não entendeu o meu problema

  1. Se você logar um uma tab, ao abrir outra caso a sessão esteja compartilhada faça o seguinte teste. Efetue Logff e depois na primeira tab clique no botão, oq irá acontecer? Você irá ver o mesmo comportamento.
    Não acho que faz sentido isso com o meu problema

Vou parar por aqui pois eu não estou conseguindo explicar seu problema, pois tomei como base a resposta abaixo:

Fica uma dica: http://iamajavadeveloper.blogspot.com/2009/09/how-to-handle-viewexpiredexception-in.html

Seu erro é ViewExpiredException tenta procurar como tratar esse erro no google.

Feras consegui resolver fica a solução ai.

estou usando o servidor de aplicação Jboss e o tempo de TimeOut dele estava setado para o start com 80 segundos e de stop 50

diminuir e o problema foi resolvido :wink: