CommandButton em forms diferentes dentro da mesma pagina nao funciona
Opa blz pessoal. Estou desenvolvendo um portal com Jsf 2.2 e primefaces 5.2. Tenho uma pagina com um datatable do primefaces que serve pra listar os processo e dar a opção para o usuario editar ou excluir o mesmo. Dentro desta pagina na parte superior tem um inputText para o usuario digitar uma palavra chave para ser usado como filtro dos processos que serao exibidos no datatable, junto com inputText um commandButton que chama o metodo o bean que traz os registros de acordo com a palavra chave e da o update no datatable com o atributo update. Até aqui funciona tranquilo, mas no dataTable uma das colunas é um commandButton com um binding pra um outro bean que redireciona para a pagina do formulario. Esse segundo commandButton no primeiro clique não funciona e no segundo da excessão. Fiz um teste e tirei o commandButton do filtro, assim o segundo do datatable funcionou. Jas pesquisei em todo lugar e não consigo encontrar oque pode ser isso. Vou colocar o codio embaixo pra ficar mais facil entender.
Pagina com o commandButton do filtro e datatable:
codigo do bean que recebe o request do commandButton do datatable
exceção gerada
Pagina com o commandButton do filtro e datatable:
<h:panelGroup layout="block">
<h:form>
<h:panelGroup layout="block" class="pesquisa">
<h:panelGroup layout="block" class="pesquisa-campo">
<h:panelGroup layout="block" class="pesquisa-campo-tipo">
<h:outputLabel value="Tipo"
for="tipo"
class="pesquisa-campo-label">
</h:outputLabel>
<h:inputText readonly="true"
value="Emergencial"
name="tipo">
</h:inputText>
</h:panelGroup>
<h:panelGroup layout="block" class="pesquisa-campo-mensagem">
<h:outputLabel value="Mensagem"
for="mensagem"
class="pesquisa-campo-label">
</h:outputLabel>
<h:inputText name="mensagem"
value="#{processoBean.pesquisa}">
</h:inputText>
</h:panelGroup>
</h:panelGroup>
<h:panelGroup layout="block" class="pesquisa-botao">
<h:panelGroup layout="block" class="pesquisa-botao-mensagem">
<p:commandButton value="Pesquisar"
ajax="false"
actionListener="#{processoBean.processar}"
update=":tabela" />
</h:panelGroup>
<h:panelGroup layout="block" class="pesquisa-botao-mensagem">
<p:commandButton value="Novo"/>
</h:panelGroup>
<h:panelGroup class="clear"/>
</h:panelGroup>
<h:panelGroup class="clear"/>
</h:panelGroup>
</h:form>
</h:panelGroup>
<h:panelGroup layout="block" class="lista" id="tb">
<p:dataTable id="tabela"
var="processo"
paginator="true"
rows="8"
value="#{processoBean.processoList}"
binding="#{formularioBean.dataTableProcess}"
>
<p:column headerText="Id">
<h:outputText value="#{processo.id}" />
</p:column>
<p:column headerText="Descrição">
<h:outputText value="#{processo.descricao}" />
</p:column>
<p:column headerText="Editar">
<h:form>
<p:commandButton value="Edit"
ajax="false"
action="#{formularioBean.processar}"/>
</h:form>
</p:column>
</p:dataTable>
</h:panelGroup>codigo do bean que recebe o request do commandButton do datatable
public String processar(){
processo = (ProcessoVO) dataTableProcess.getRowData();
Object obj = (Object) processo;
fieldList = formularioService.gerarCamposFormulario(processo.getClass(), obj);
return "/formulario.xhtml";
}exceção gerada
Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/Poc-Portal] threw exception [null] with root cause
java.lang.IllegalStateException
at javax.faces.component.UIComponentBase.queueEvent(UIComponentBase.java:1052)
at javax.faces.component.UIComponentBase.queueEvent(UIComponentBase.java:1054)
at javax.faces.component.UIComponentBase.queueEvent(UIComponentBase.java:1054)
at javax.faces.component.UICommand.queueEvent(UICommand.java:344)
at org.primefaces.component.commandbutton.CommandButton.queueEvent(CommandButton.java:290)
at org.primefaces.component.commandbutton.CommandButtonRenderer.decode(CommandButtonRenderer.java:44)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:831)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1225)
at javax.faces.component.UIForm.processDecodes(UIForm.java:225)
at org.primefaces.component.api.UIData.process(UIData.java:373)
at org.primefaces.component.api.UIData.processChildren(UIData.java:360)
at org.primefaces.component.api.UIData.processPhase(UIData.java:322)
at org.primefaces.component.api.UIData.processDecodes(UIData.java:280)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
at org.primefaces.component.layout.Layout.processDecodes(Layout.java:226)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:929)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1517)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1474)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:724)M2g
Curtidas 0
Respostas
Ronaldo Lanhellas
10/06/2015
Tenta mudar parA:
<p:commandButton value="Edit" process="@this"
ajax="false"
action="#{formularioBean.processar}"/>
GOSTEI 0
Ronaldo Lanhellas
10/06/2015
Tenta mudar parA:
<p:commandButton value="Edit" process="@this"
ajax="false"
action="#{formularioBean.processar}"/>
GOSTEI 0