2009-05-17 5 views
0

Ich brauche wirklich Hilfe zu diesem Thema.Problem mit JSF h: commandButton

Ich habe ein einfaches Anmeldeformular in JSP-Datei, und ich versuche, JSF und verwalteten Beans damit zu verwenden. Wenn ich die Seite zum ersten Mal fire, wird der Inhalt angezeigt, aber wenn ich den Submit-Button (h: commandButton) drücke, erhalte ich einen Fehler.

Kann mir jemand sagen, was mit meinem Code nicht stimmt?

Fehler:

javax.servlet.ServletException: javax.faces.FacesException: Expression Error: Named Object: Login not found. 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:256) 

Hier ist meine JSP:

<%@page contentType="text/html"%> 
<%@page pageEncoding="UTF-8"%> 

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> 
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

<f:view> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <h:form id="login"> 
      <h:messages tooltip="true" /> 
      <h:inputText id="userNaME" required="true" requiredMessage="User name is required" value="#{Login.userName}" > 
       <f:validator validatorId="Login" /> 
      </h:inputText><br /> 
      <h:inputSecret id="userPassword" required="true" value="#{Login.userPassword}" requiredMessage="User Password is required" /><br /> 
      <h:commandButton id="Login" title="Login" type="submit" action="#{Login.LoginUser}" /> 
      <h:message for="Login" style="color: green;" /> 
     </h:form> 
    </body> 
</html> 
</f:view> 

My Bean Klasse:

package myvalidators; 

public class Login { 
    private String _userName; 
    private String _userPassword; 

    public void setUserName(String userName) 
    { 
     this._userName = userName; 
    } 

    public String getUserName() 
    { 
     return this._userName; 
    } 

    public void setUserPassword(String userPassword) 
    { 
     this._userPassword = userPassword; 
    } 

    public String getUserPassword() 
    { 
     return this._userPassword; 
    } 

    public String LoginUser() 
    { 
     return this._userName; 
     //going to perform a login here 
    } 
} 

Und meine Gesichter-config xml

<managed-bean> 
     <managed-bean-name>Login</managed-bean-name> 
     <managed-bean-class>myvalidators.Login</managed-bean-class> 
     <managed-bean-scope>request</managed-bean-scope> 
    </managed-bean> 

Antwort

2

ist wahrscheinlich das Problem:

<f:validator validatorId="Login" /> 

den Tag entfernen.

Das muss validatorId Attributwert zu dem Element eines in faces-config.xml registriert ValidatorValidator-ID entsprechen.

+0

Ich habe die Lösung gefunden, und was Sie gesagt haben, war genau das Problem. Nahm mich den ganzen Tag, um es herauszufinden, ich wünschte, sie würden Java-Fehlermeldungen ausführlicher machen. Wie auch immer, vielen Dank! – Dmitris

1

Ich weiß nicht viel über angefragte Bohnen. Hast du versucht, es für Session-Bean zu ändern? Meine Vermutung ist, dass diese Beans eine Initialisierung benötigen, die Ihrem Code fehlt. Diese

+0

Das war nicht das Problem, jedenfalls danke für den Versuch zu helfen. – Dmitris