2011-01-05 15 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>は親フォームを送信しません。POSTフォームを送信せずにボタンを押すだけでJSコードを実行できるようにするのは単なるフックです。それを<p:commandButton>で置き換えます。また、送信後にid="msgs"を使用してupdate="msgs"を追加してコンポーネントを更新することもできます。具体的な問題とは無関係の


、あなたはそれがnullを返す可能性があるためgetSession(false)を使用する必要はありません。ちょうどgetSession(true)を使用してください。

+0

ありがとうBalusC!しかし、私のアプリケーションがエラーメッセージで応答するfixigの後:-) http://stackoverflow.com/questions/4605118/jsf2-exeptions-while-submiting-to-bean – Sven

関連する問題