Galera pra eu postar aqui foi so o ultimo caso mesmo…
tou tentando desde onten atarde…
fiz um sistema de login, mais não vai, coloco usuario correto… errado…
dps do login ele é redirecionado a alguma pagina…
segue o erro:
javax.servlet.ServletException: javax.el.MethodNotFoundException: /index.xhtml @49,76 action="#{loginBean.login}": Method not found: controller.LoginBean@6b83eec5.login()
javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
codigo:
[code] <h:form id=“login”>
<p:focus for=“usuario” />
<h:panelGrid columns="2">
<h:outputLabel for="usuario" value="Usuário:*" />
<p:inputText id="usuario" required="true"
value="#{loginBean.usuario}" label="Usuário" size="40"
title="Campo Obrigatório. Informe o login do usuário">
<f:validateLength minimum="2" maximum="50" />
<p:tooltip for="usuario" showEvent="focus" hideEvent="blur" />
</p:inputText>
<h:outputText value="Senha:*" />
<p:password id="senha" value="#{loginBean.senha}" label="Senha"
title="Campo Obrigatório. Informe a senha do usuário">
<f:validateLength minimum="2" maximum="20" />
<p:tooltip for="senha" showEvent="focus" hideEvent="blur" />
</p:password>
</h:panelGrid>
<p:commandButton type="submit" value=" Login" icon="login"
action="#{loginBean.login}" ajax="false" style="margin-left:20px;" />
</h:form>[/code]
[code]public class LoginBean {
private Conexao obj_conexao;
// Atributos
private String usuario;
private String senha;
// Get and Set
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String login(String usuario, String senha) {
FacesContext mensagem = FacesContext.getCurrentInstance();
try {
String comando_sql = "select login, senha from tbl_usuarios where login=? and senha=?";
PreparedStatement obj_sql = (PreparedStatement) obj_conexao
.getConexao().prepareStatement(comando_sql);
obj_sql.setString(1, usuario.trim());
obj_sql.setString(2, senha.trim());
ResultSet rs = obj_sql.executeQuery();
rs.next();
obj_sql.close();
if (rs.next() && rs.getString("usuario") != null
&& rs.getString("usuario").equals(usuario)
&& rs.getString("senha").equals(senha)) {
return "clientes.jsf";
} else {
return "index.jsf";
}
} catch (Exception e) {
System.out.println("Erro exception do login" + e.getMessage());
}
return "index.jsf";
}[/code]
valew
Cara,
javax.servlet.ServletException: javax.el.MethodNotFoundException: /index.xhtml @49,76 action="#{loginBean.login}": Method not found: controller.LoginBean@6b83eec5.login()
javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
Observe o ‘MethodNotFoundException’. Traduzindo, método não encontrado. Você está com um método no MB que recebe 2 parâmetros e está chamando ele no xhtml sem nenhum parâmetro.
Tire os parâmetros do método que aí vai funcionar
public String login(String usuario, String senha)
deixo assim
public String login()
Mais uma coisa… não retorne o String com o nome da página, senão o seu botão vai interpretar o nome da página como nome do método a executar
[quote=Flip_novidade]public String login(String usuario, String senha)
deixo assim
public String login()[/quote]
Isso mesmo. E para redirecionar, podes fazer assim:
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
try {
ec.redirect("local_para_direcionar");
} catch (Exception ex) {
Logger.getLogger(Redireciona.class.getName()).log(Level.SEVERE, null, ex);
}
beleza…
mais como faço para ele redirecionar caso correto o login?
Primeiro troque o retorno do seu método de String para void.
Depois, ao invés disso
return "clientes.jsf";
Faça isso
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
try {
ec.redirect("clientes.jsf");
} catch (Exception ex) {
Logger.getLogger(Redireciona.class.getName()).log(Level.SEVERE, null, ex);
}
Ou semelhante a isso, talvez tenha que colocar o caminho completo até a página que você deseja
agora tah dando meu login null
[code] public void login() {
FacesContext mensagem = FacesContext.getCurrentInstance();
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
try {
String comando_sql = "select login, senha from tbl_usuarios where login=? and senha=?";
PreparedStatement obj_sql = (PreparedStatement) obj_conexao
.getConexao().prepareStatement(comando_sql);
obj_sql.setString(1, usuario.trim());
obj_sql.setString(2, senha.trim());
ResultSet rs = obj_sql.executeQuery();
rs.next();
obj_sql.close();
if (rs.next() && rs.getString("usuario") != null && rs.getString("usuario").equals(usuario) && rs.getString("senha").equals(senha)) {
ec.redirect("clientes.jsf");
//return "clientes.jsf";
} else {
ec.redirect("index.jsf");
//return "index.jsf";
}
} catch (Exception e) {
System.out.println("Erro exception do login" + e.getMessage());
}
}[/code]
Não entendi… o que está null ? Qual é o erro exatamente ?
tipo eu coloco o logim e senha e num faiz nada…
Erro exception do loginnull
ta caindo aqui
[code] } catch (Exception e) {
System.out.println("Erro exception do login" + e.getMessage());
}
[/code]
[code]public void login() {
FacesContext mensagem = FacesContext.getCurrentInstance();
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
try {
String comando_sql = "select login, senha from tbl_usuarios where login=? and senha=?";
PreparedStatement obj_sql = (PreparedStatement) obj_conexao.getConexao().prepareStatement(comando_sql);
obj_sql.setString(1, usuario.trim());
obj_sql.setString(2, senha.trim());
ResultSet rs = obj_sql.executeQuery();
rs.next();
//obj_sql.close();
System.out.println("Dentro do try ");
if (rs.next() && rs.getString("login") != null && rs.getString("login").equals(usuario) && rs.getString("senha").equals(senha)) {
ec.redirect("clientes.jsf");
System.out.println("Dentro do try if");
} else {
ec.redirect("index.jsf");
System.out.println("Dentro do try else");
}
} catch (Exception e) {
//ele entra aqui direto
System.out.println("Erro exception do login " + e.getMessage());
System.out.println("Dentro do catch");
}
}[/code]
parece que ele não est pegando nada pra entra no try…
clico no botão logar e não vai…
Tente tirar o ajax=“false” do botão e colocar process=“login”
<p:commandButton type="submit" value=" Login" icon="login"
action="#{loginBean.login}" process="login" style="margin-left:20px;" />
assim ?
mesma coisa…
“Erro exception do login null
Dentro do catch”
Sabe debugar a aplicação ? Assim podes ir linha por linha e ver exatamente aonde acontece o erro
alguem ai pra dar uma força