2011-01-05 5 views
0

Das Formular wird nicht an die Bean gesendet.Formular wird nicht an die Bean gesendet

login.xhtml

<h:form> 
    <p:panel header="Login"> 
     <p:messages id="msgs" showDetail="true"/> 
     <h:panelGrid columns="2" columnClasses="column" cellpadding="5"> 
      <h:outputLabel for="user" value="Username" /> 
      <h:inputText id="user" value="#{login.username}" /> 

      <h:outputLabel for="pw" value="Passwort" /> 
      <h:inputSecret id="pw" redisplay="false" value="#{login.password}" /> 
     </h:panelGrid> 
     <p:button value="Anmelden" action="#{login.login}" type="submit" /> 
    </p:panel> 
</h:form> 

Login.java

@ManagedBean 
@ViewScoped 
public class Login { 

    private FacesContext fCtx; 
    private String username; 
    private String password; 

    public Login() { 
     fCtx = FacesContext.getCurrentInstance(); 
    } 

    public String login(){ 
     HttpSession session = (HttpSession) fCtx.getExternalContext().getSession(false); 
     String sessionId = session.getId(); 
     fCtx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Info: ", getUsername()+", "+getPassword()+", "+sessionId)); 

     return "login.xhtml"; 
    } 


    public void setUsername(String username) { 
     this.username = username; 
    } 
    public String getUsername() { 
     return username; 
    } 
    public void setPassword(String password) { 
     this.password = password; 
    } 
    public String getPassword() { 
     return password; 
     } 
    } 

Es gibt auch keine Ausnahmen in den Protokollen. Was ist das Problem und wie kann ich es beheben?

Antwort

1

Die <p:button> übergibt nicht das übergeordnete Formular, es ist nur ein Haken, um einige JS-Code auf Knopfdruck ausführen zu können, ohne die Absicht, ein POST-Formular zu senden. Ersetzen Sie es durch <p:commandButton>. Außerdem möchten Sie update="msgs" hinzufügen, um die Komponente nach dem Senden mit id="msgs" zu aktualisieren.


keinem Zusammenhang mit dem konkreten Problem, wollen Sie nicht getSession(false) verwenden, da es null zurückkehren. Verwenden Sie einfach getSession(true).

+0

Danke BalusC! Aber nach der Reparatur, dass meine Anwendung mit einer Fehlermeldung reagiert :-) http://stackoverflow.com/questions/4605118/jsf2-exeptions-while-submitting-to-bean – Sven