h:SelectOneMenu no escopo request

6 views
Skip to first unread message

Luciano Assis

unread,
Jan 9, 2009, 10:34:19 AM1/9/09
to jav...@googlegroups.com
Fala galera,

Estou tentando usar um selectOnemenu populando com a tag f:selectItems.

O managed-bean é de escopo request, ao enviar o formulário para o servidor, é lançada uma exception na fase PROCESS VALIDATION do ciclo de vida.

Ao modificar o escopo para sessão funciona normalmente, porém por questões de escalabilidade não posso manter os managedbeans no escopo de sessão.

Como eu poderia resolver essa bronca?

[]'s

Volnei

unread,
Jan 9, 2009, 12:52:50 PM1/9/09
to jav...@googlegroups.com
Coloca o stacktrace da exception aqui pra gente!


Abraço

2009/1/9 Luciano Assis <luci...@gmail.com>



--
Volnei Granado Munhoz
Analista de Sistemas

Luciano Assis

unread,
Jan 9, 2009, 1:02:16 PM1/9/09
to jav...@googlegroups.com
Beleza...

No meu xhtml o código está assim:

<h:outputLabel for="idFilial"  value="#{msg['view.departamento.filial']}" />
<h:selectOneMenu id="idFilial" value="#{incluirDepartamentoMB.idFilial}">
       <f:selectItems value="#{incluirDepartamentoMB.filiais}" />
</h:selectOneMenu>


No managed bean tenho um ArrayList do tipo SelectItem de nome "filiais" e outra variável que receberá o seu id.


Quando coloco o MB no escopo session funciona sem problemas.


Porém quando utilizo o escopo do tipo request, é lançada a seguinte exceção.


executePhase(PROCESS_VALIDATIONS 3,com.sun.faces.context.FacesContextImpl@1ae5e59) threw exception
javax.faces.FacesException
        at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:108)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
        at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
        at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
        at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: java.util.NoSuchElementException
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:117)
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:144)
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:49)
        at javax.faces.component.UISelectOne.matchValue(UISelectOne.java:164)
        at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:137)
        at javax.faces.component.UIInput.validate(UIInput.java:867)
        at javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
        at javax.faces.component.UIInput.processValidators(UIInput.java:666)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
        at javax.faces.component.UIForm.processValidators(UIForm.java:229)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
        at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662)
        at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
        ... 34 more





[]'s

Volnei Munhoz

unread,
Jan 9, 2009, 1:12:16 PM1/9/09
to javasf: JavaServer Faces International Group
Você vai precisar de algum recurso como o <t:saveState/> do tomahawk.
Tambem achei uma discussão interessante sobre o assunto aqui

http://www.guj.com.br/posts/list/50249.java

Abraços

Diego Pinheiro

unread,
Jan 9, 2009, 1:42:43 PM1/9/09
to jav...@googlegroups.com

Você verificou se os seus atributos (tanto a lista do selectonemenu como onde eh salvo o valor selecionado) estao sendo inicializados corretamente?

eu tive esse problema esses dias, primeiro descobri que onde eu estava selecionando estava carregando como nulo, depois acabei indicando o valor selecionado pro atributo errado...hehehe


2009/1/9 Volnei Munhoz <volnei...@gmail.com>



--
Atenciosamente,

Diego Pinheiro

Luciano Assis

unread,
Jan 9, 2009, 2:43:33 PM1/9/09
to jav...@googlegroups.com
Valeu Volnei,

Consegui resolver com a tag <t:saveState>.

Muito obrigado!! :D

[]'s
Reply all
Reply to author
Forward
0 new messages