PrimeFaces CommandButton não chama método do controller

9 respostas
G

Olá Pessoal, estou utilizando um gerador de CRUDS o PrimeFaces CRUD Generator e o o commandbutton não chama o método
ele deveria chamar um método de persistencia mas não estava chamando pensei que era falha no médo mas me dei conta de que era problema com o botão quando troquei o método por um System.out.println e não imprimiu a mensagem que eu coloquei

Controller :
package BBean;


import entidades.Docente;
import SBean.DocenteFacade;
import java.io.Serializable;
import java.lang.String;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Named;
import javax.inject.Inject;
import javax.enterprise.context.SessionScoped;


@Named(value = "docenteController")
@SessionScoped
public class DocenteController extends AbstractController<Docente> implements Serializable {


    @Inject
    private DocenteFacade ejbFacade;


    public DocenteController() {
        super(Docente.class);
    }


    @PostConstruct
    public void init() {
        super.setFacade(ejbFacade);
    }
    public List<String> getListaSimNao(){
        List<String> lista = new ArrayList<String>();
        lista.add("Sim");
        lista.add("Não");
        return lista;
    }
public void sout(){
        System.out.println("Imprima");
    }
}
Código com o Botão
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">


    <ui:composition>


        <p:dialog id="DocenteCreateDlg" widgetVar="DocenteCreateDialog" modal="true" resizable="false" appendToBody="true" header="#{myBundle.CreateDocenteTitle}">


            <h:form id="DocenteCreateForm">


                <h:panelGroup id="display">
                    <p:panelGrid columns="2" rendered="#{docenteController.selected != null}">


                        <p:outputLabel value="#{myBundle.CreateDocenteLabel_nome}" for="nome" />
                        <p:inputText id="nome" value="#{docenteController.selected.nome}" title="#{myBundle.CreateDocenteTitle_nome}" />


                        <p:outputLabel value="#{myBundle.CreateDocenteLabel_rf}" for="rf" />
                        <p:inputText id="rf" value="#{docenteController.selected.rf}" title="#{myBundle.CreateDocenteTitle_rf}" />


                        <p:outputLabel value="#{myBundle.CreateDocenteLabel_avaliadorexterno}" for="avaliadorexterno" />
                        <p:selectOneMenu id="avaliadorexterno" value="#{docenteController.selected.avaliadorexterno}"  >
                            <f:selectItems value="#{docenteController.listaSimNao}" var="item" itemLabel="#{item}"/>
                        </p:selectOneMenu>




                        <p:outputLabel value="#{myBundle.CreateDocenteLabel_email}" for="email" />
                        <p:inputText id="email" value="#{docenteController.selected.email}" title="#{myBundle.CreateDocenteTitle_email}" />


                        <p:outputLabel value="#{myBundle.CreateDocenteLabel_siatuacao}" for="siatuacao" />
                        <p:inputText id="siatuacao" value="#{docenteController.selected.siatuacao}" title="#{myBundle.CreateDocenteTitle_siatuacao}" />
                    </p:panelGrid>
                    <p:commandButton actionListener="#{docenteController.sout}" value="#{myBundle.Save}" update="display,:DocenteListForm:datalist,:growl" oncomplete="handleSubmit(xhr,status,args,DocenteCreateDialog);"/>
                    <p:commandButton value="#{myBundle.Cancel}" onclick="DocenteCreateDialog.hide();"/>
                </h:panelGroup>


            </h:form>


        </p:dialog>


    </ui:composition>


</html>

Obs. vi que tem "N" tópicos relacionados a esse assunto, mas as soluções dadas aos outros não tiveram efeito comigo, tais quais :
Ajax = false
immediate="true" process="@this"

9 Respostas

A

Opa, aparentemente ta certo, a unica coisa que ta diferente do que eu costumo fazer é a virgula separando os atributos do update, eu costumo deixar espaço.

G

então, AmauriSpPoa porém ele não funciona :frowning: não sei o que pode estar de errado, quanto ao update acho que não tem problema dessa forma

J

Coloca um messages pra ver se ocorre algum erro de validação no ciclo de vida do JSF:

<h:form id="formMensagem">
			<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
		</h:form>
E

Boa noite.
Altere

actionListener="#{docenteController.sout}"

para

action="#{docenteController.sout}"
G

Edson Donizete e jonas.cant tentei as duas sujestões sem sucesso :frowning:

G

Vamos tentar por etapa, se você colocar só esses atributos abaixo no seu botão, ele funciona ?

<p:commandButton actionListener="#{docenteController.sout()}" value="teste">

Depois tenta colocando isso aqui :

<p:commandButton actionListener="#{docenteController.sout()}" value="teste" process="@form" immediate="true">
R

o actionListener espera que no Bean haja um método com um parâmetro da classe ActionEvent:

public void sout(ActionEvent evento){ System.out.println("Imprima"); }

G

Não estou conseguindo postar o erro, esta aparecendo uma pagina escrito: “500 Internal Server Error”

G

agora esta aparecendo isso ai, o servidor liga da pra acessa a aplicação mas não chama o metodo
mesmo com esse problema tentei sua sujestao gustavo_souza e não funcionou

obs. a mensagem abaixo apareceu mesmo antes de eu tentar sua sujestão

java.io.IOException: Uma conexão estabelecida foi anulada pelo software no computador host
	at sun.nio.ch.SocketDispatcher.write0(Native Method)
	at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
	at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:89)
	at sun.nio.ch.IOUtil.write(IOUtil.java:46)
	at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:450)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.flushByteBuffer(TCPNIOTransport.java:1252)
	at org.glassfish.grizzly.nio.transport.TCPNIOAsyncQueueWriter.write0(TCPNIOAsyncQueueWriter.java:107)
	at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:296)
	at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:203)
	at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:73)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransportFilter.handleWrite(TCPNIOTransportFilter.java:128)
	at org.glassfish.grizzly.filterchain.TransportFilter.handleWrite(TransportFilter.java:191)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$8.execute(ExecutorResolver.java:111)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
	at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:853)
	at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:822)
	at org.glassfish.grizzly.http.io.OutputBuffer.flushBuffer(OutputBuffer.java:1011)
	at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:676)
	at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:355)
	at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:342)
	at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:161)
	at java.nio.channels.Channels$WritableByteChannelImpl.write(Channels.java:458)
	at com.sun.faces.application.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:343)
	at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
	at org.primefaces.application.PrimeResourceHandler.handleResourceRequest(PrimeResourceHandler.java:99)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:643)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
	at java.lang.Thread.run(Thread.java:722)
Criado 9 de setembro de 2013
Ultima resposta 18 de set. de 2013
Respostas 9
Participantes 6