Método não encontrado em classe de controle JSF

2 respostas
satangoss

Olá pessoal em algumas paginas estou tendo problemas com relação a metodos não encontrados. No exemplo tenho um panelgrid com dois componentes de pesquisa em uma tabela, uma por pesquisa digitando uma palavra e outra com um combobox com opções de filtro. A segunda opção está funcionando perfeitamente, porem a pesquisa por inputText não. Os dois métodos estão na mesma classe de controle no mesmo Managed Bean, por isso não intendo porque um metodo ele reconhece o outro não. Tambpem notem que o método é chamado com um numero aleatório apos o nome da classe de controle como mostro no ultimo código ([email removido]()). Segue os códigos :

Pagina listarUsuarios.xhtml

<h:form id="formListarUsuarios">
   <div class="opcoes">
                <h:panelGrid rendered="#{AutenticaMB.usuario.nivel == 0}" columns="7">
                    <h:panelGroup>
                        <h:selectOneMenu value="#{UsuarioMB.filtro}" >
                            <f:selectItems value="#{UsuarioMB.comboFiltro}"/>
                        </h:selectOneMenu>
                        <h:commandLink styleClass="opButton">
                            <a4j:support  event="onchange"  action="#{UsuarioMB.listarUsuarios}" reRender="panelListaUsuarios" ajaxSingle="true"/>
                            <h:graphicImage value="/images/filter.jpg" />
                            <h:outputText value="Filtrar" />
                        </h:commandLink>
                    </h:panelGroup>
                    <h:panelGroup>
                        <h:inputText value="#{UsuarioMB.pesquisa}"/>
                        <h:commandLink styleClass="opButton">
                            <a4j:support event="onclick"  action="#{UsuarioMB.listarUsuariosPesquisa}" reRender="formListarUsuarios" ajaxSingle="true"/>
                            <h:graphicImage value="/images/find.jpg" />
                            <h:outputText value="Localizar" />
                        </h:commandLink>
                    </h:panelGroup>
                </h:panelGrid>
            </div>

   </h:form>

Classe UsuarioControle

public class UsuarioControle extends Controle {

    private Usuario usuario;
    private UsuarioDAO dao;
    private Usuario usuarioLogado = (Usuario) WebContext.getSessionAttribute("usuario");
    private HtmlDataTable tableUsuario; //Pode usar tambem data model é um tipo diferente mais faz a mesma coisa
    private int filtro;
    private String pesquisa;


//Getters e setters

   /**
     * Lista todos os Usuarios do banco de dados
     *
     * @return lista
     */
    public List<Usuario> getListarUsuarios() throws NamingException, SQLException {

        abrirConexao();
        String filtroSQL = selecionaFiltro(filtro);
        List lista = dao.listar(filtroSQL);
        fecharConexao();
        limparUsuario();
        return lista;
    }

    /**
     * Lista todos os Usuarios do banco de dados
     *
     * @return lista
     */
    public List<Usuario> getListarUsuariosPesquisa() throws NamingException, SQLException {

        abrirConexao();
        List lista = dao.listarPesquisa(this.getPesquisa());
        fecharConexao();
        limparUsuario();
        return lista;
    }

Faces-config:

<managed-bean>
        <managed-bean-name>UsuarioMB</managed-bean-name>
        <managed-bean-class>portalAdmin.controle.UsuarioControle</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

Erro :

SEVERE: javax.el.MethodNotFoundException: /usuario/listarUsuarios.xhtml @38,153 action="#{UsuarioMB.listarUsuariosPesquisa}": Method not found: [email removido]()
javax.faces.el.MethodNotFoundException: javax.el.MethodNotFoundException: /usuario/listarUsuarios.xhtml @38,153 action="#{UsuarioMB.listarUsuariosPesquisa}": Method not found: [email removido]()
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:81)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
        at caixa.sc.portalAdmin.util.ExceptionHandler.processAction(ExceptionHandler.java:52)
        at javax.faces.component.UICommand.broadcast(UICommand.java:383)
        at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
        at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
        at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
        at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
        at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
        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.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
        at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
        at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
        at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
        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:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:595)
Caused by: javax.el.MethodNotFoundException: /usuario/listarUsuarios.xhtml @38,153 action="#{UsuarioMB.listarUsuariosPesquisa}": Method not found: [email removido]()
        at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:72)
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
        ... 30 more

A classe DAO não postei porque acredito que nao seja o problema pois está pareceido com o getListarUsuarios só trocando o paramentro filtro pela string da pesquisa.
Agradeço desde já qualquer ajuda.

2 Respostas

Scoobydoo

Tente trocar…

<a4j:support  event="onchange"  action="#{UsuarioMB.listarUsuarios}" reRender="panelListaUsuarios"

por

<a4j:support  event="onchange"  action="#{UsuarioMB.getlistarUsuarios}" reRender="panelListaUsuarios"

Para o getListarUsuariosPesquisa também… esta sem o get…

satangoss

Scoobydoo:
Tente trocar…

<a4j:support  event="onchange"  action="#{UsuarioMB.listarUsuarios}" reRender="panelListaUsuarios"

por

<a4j:support  event="onchange"  action="#{UsuarioMB.getlistarUsuarios}" reRender="panelListaUsuarios"

Para o getListarUsuariosPesquisa também… esta sem o get…

Olá Scoobydoo vlw pela resposta, mas o problema esta no outro pesquisar o do input esse ai encima funciona perfeitamente. o que ele náo encontra é o este método:

<a4j:support event="onclick"  action="#{UsuarioMB.listarUsuariosPesquisa}" reRender="formListarUsuarios" ajaxSingle="true"/>

também tentei colocar o get no UsuarioMB.listarUsuariosPesquisa mas mesmo assim deu o mesmo erro.

Criado 4 de março de 2011
Ultima resposta 4 de mar. de 2011
Respostas 2
Participantes 2