[RESOLVIDO]Problema de navegação com JSF

Pessoal,

Tenho esse ManageBean:

@ManagedBean(name = "autenticationBean")
@SessionScoped
public class AutenticationBean {
    
    private String senha;
    private String login;

    UsuariosController use = new UsuariosController();

    public AutenticationBean() {
    }

    public AutenticationBean(String senha, String login) {
        this.senha = senha;
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }
    
    public boolean getCheckPassword(){                   
        return use.checkPassword(login, senha);
    }

    @Override
    public int hashCode() {
        int hash = 3;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final AutenticationBean other = (AutenticationBean) obj;
        if (this.senha != other.senha) {
            return false;
        }
        if ((this.login == null) ? (other.login != null) : !this.login.equals(other.login)) {
            return false;
        }
        return true;
    }

e a tela:

<?xml version='1.0' encoding='UTF-8' ?>
<!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:p="http://primefaces.org/ui"
      xmlns:h="http://java.sun.com/jsf/html">


    <h:head>
        <title>Sistema de Controle</title>
        <h:outputStylesheet name="css/jsfcrud.css"/>
    </h:head>

    <h:body>

        <h:form>
            <center>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>              
                <h:panelGrid columns="2">
                    <h:outputLabel value="#{bundle.EditUsuariosLabel_alias}" for="login" />
                    <h:inputText id="login" value="#{autenticationBean.login}" title="#{bundle. EditUsuariosLabel_alias}"/>
                    <h:outputLabel value="#{bundle.EditUsuariosLabel_senha}" for="senha" />
                    <h:inputSecret id="senha" value="#{autenticationBean.senha}" title="#{bundle.EditUsuariosTitle_senha}" />
                </h:panelGrid>
                <p:commandButton action="#{autenticationBean.checkPassword}" value="INICIAR" ajax="false"/> 
                <p:commandButton action="http://intranet" value="SAIR" ajax="false"/>
            </center>
        </h:form>
        <br />
        <br />
        <h:link outcome="/crud/usuarios/List" value="Show All Usuarios Items"/>
    </h:body>

</html>

quando clico no botão Iniciar aparece o seguinte erro:
javax.el.MethodNotFoundException: /index.xhtml @43,108 action="#{autenticationBean.checkPassword}": Method not found: br.com.mda.bean.AutenticationBean@3.checkPassword()

alguém pode me dizer porquê ele não está encontrando o método?

Sds,

Maurijava.

O método checkPassword na verdade deveria ser mais ou menos assim:

public String checkPassword(){       
   if(use.checkPassword(login, senha)){
      return "paginaSucesso.xhtml";  
   }else{
      return "paginaLogin.xhtml";  
   }                  
}

[quote=ayslanms]O método checkPassword na verdade deveria ser mais ou menos assim:

public String checkPassword(){ if(use.checkPassword(login, senha)){ return "paginaSucesso.xhtml"; }else{ return "paginaLogin.xhtml"; } } [/quote]

Verdade meu caro… Você tem razão.

Mesmo assim eu corrigi o metodo e continua dando o mesmo erro??? Vê só:

public boolean getCheckPassword(){                   
        return use.checkPassword(login, senha);
    }
    
    public String getIniciar(){
        if (getCheckPassword()){
            return "backend.xhtml";
        }else{
         return "index.xhtml";   
        }
        
        
    }

trecho da pagina:

<h:panelGrid columns="2">
                    <h:outputLabel value="#{bundle.EditUsuariosLabel_alias}" for="login" />
                    <h:inputText id="login" value="#{autenticationBean.login}" title="#{bundle. EditUsuariosLabel_alias}"/>
                    <h:outputLabel value="#{bundle.EditUsuariosLabel_senha}" for="senha" />
                    <h:inputSecret id="senha" value="#{autenticationBean.senha}" title="#{bundle.EditUsuariosTitle_senha}" />
                </h:panelGrid>
                <p:commandButton action="#{autenticationBean.iniciar}" value="INICIAR" ajax="false"/> 
                <p:commandButton action="http://intranet" value="SAIR" ajax="false"/>

Galera, resolvido…

Encontrei aqui mesmo um problema semelhante. resolvido com actionListner na page. Segue link para quem interessar possa:

http://www.guj.com.br/java/250640-resolvido-javaxelmethodnotfoundexception-problemas-ao-tentar-executar-um-metodo-de-um-mb

Sds,

Maurijava.

Acho que esse erro é em função do “get” no nome do método, deixa da maneira que eu coloquei para você.

Mais uma vez tens razão caro colega… Viageie na maionese…

Muito obrigado!

Sds,

Maurijava.

bom dia

So um adendo

quando se usa o commandButton usando o atributo action

como é o que vc esta fazendo aqui:

<p:commandButton action="#{autenticationBean.iniciar}" value="INICIAR" ajax="false"/> 

o método que ele vai chamar no seu MB não pode começar com get

que é como vc está fazendo aqui:

public String getIniciar(){  
        if (getCheckPassword()){  
            return "backend.xhtml";  
        }else{  
         return "index.xhtml";     
        }  

ele deve ser assim

public String iniciar(){  //sem o "get"
        if (getCheckPassword()){  
            return "backend.xhtml";  
        }else{  
         return "index.xhtml";     
        }  

no tópico que vc mencionou
o erro do nosso colega era diferente

no commandButton dele

<a4j:commandButton image="/images/bota_adicionar.png" action="#{veiculoIndividualRelatorioBean.instanciaDespesa}" reRender="listaDespesas"/>

ele chama o método instanciaDespesa

no MB mas a assinatura do método instanciaDespesa dele esta errada para usar no atributo action do commandButton , mas é valida para usar no atributo actionListener

public void instanciaDespesa(ActionEvent event){  //se for usar no atributo action , não se coloca ActionEvent event
      
    this.listaDespesas.add(new Despesas());  
}  

ele poderia apenas ter tirado o ActionEvent da assinatura do método e o botão funcionaria , até porque ele não usa o ActionEvent pra nada dentro do corpo do método