Я пытаюсь проверить свой логин и получить эту ошибку сразу после нажатия кнопки логина.Я тестирую значения, которые мне нужны для аутентификации пользователя, которого я создал в базе данных mySQL.
javax.el.MethodNotFoundException: /loginuser.xhtml @ 23,92 action = "# {usuarioController.login} ": Метод не найден: com.Controller.UsuarioController@3c845446.login ()
Я использую контроллер MVC.Я определяю свой метод входа в систему следующим образом:
public String Login() {
Usuarios user = null;
String redirect="";
FacesContext context = FacesContext.getCurrentInstance();
estado = usuarioFacade.login(usuario.getCorreo(), usuario.getPasswd());
if(user!=null){
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("usuario",user);
estado = (Usuarios) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");
context.addMessage(null, new FacesMessage("Login exitoso", "Iniciando session..." + usuario.getUsername()) );
redirect = "/index";
} else {
System.out.println(" incorrectos");
redirect = "#";
context.addMessage(null, new FacesMessage("Usuario o contraseña incorrectos", "Verifique sus datos"));
}
return redirect;
}
public Usuarios getUsuarioLogeado() {
return estado;
}
public void setUsuarioLogeado(Usuarios usuarioLogeado) {
this.estado = usuarioLogeado;
}
public String cerrarSesion (){
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
estado = new Usuarios();
return "/index?faces-redirect=true";
}
Также я определил запрос на фасаде объекта "Usuarios":
public Usuarios login(String correo, String passwd) {
Usuarios usuario=null;
try {
Query consulta = em.createNativeQuery("SELECT * FROM USUARIOS WHERE CORREO = 1? AND PASSWD = 2?", Usuarios.class);
consulta.setParameter(1,correo);
consulta.setParameter(2,passwd);
usuario = (Usuarios) consulta.getSingleResult();
} catch (Exception e) {
System.out.println("error"+e.getMessage());
}
return usuario;
}
, и это представление, которое яиспользуйте для входа в систему:
<ui:composition template="/template.xhtml">
<ui:define name="title">
<h:outputText value="Iniciar Session"></h:outputText>
</ui:define>
<ui:define name="body">
<messages autoUpdate="true"/>
<h3>Login here</h3>
<h:form id="login-form">
<h:outputText value="username:"/>
<h:inputText value="#{usuarioController.usuario.correo}" id="username"/>
<br/>
<h:outputText value="password:"/>
<h:inputSecret value="#{usuarioController.usuario.passwd}" id="password"/>
<br/>
<h:commandButton id="button" value="Login" action="#{usuarioController.login}"/>
<br/>
<h:messages />
<br/>
</h:form>
</ui:define>
</ui:composition>
</html>
Что я действительно не понимаю, так это то, почему представление входа в систему не может найти или выполнить мой метод, как я определил в контроллере и фасаде.Должен ли я сделать что-то еще ???