2011-01-05 124 views
0

表单不提交给bean。表单不提交给bean

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; 
     } 
    } 

有在日志中甚至没有例外。有什么问题,我该如何解决它?

回答

1

<p:button>不提交父表单,它只是一个钩子,可以在按钮按下时执行一些JS代码,而无需提交任何POST表单。将其替换为<p:commandButton>。另外,您想在提交后添加update="msgs"以更新组件id="msgs"


无关的具体问题,你不希望使用getSession(false),因为它可能会返回null。只需使用getSession(true)

+0

谢谢BalusC!但fixig后,我的应用程序响应一个错误消息:-) http://stackoverflow.com/questions/4605118/jsf2-exeptions-while-submiting-to-bean – Sven 2011-01-05 14:26:06