2012-05-06 4 views
1

私はjsfアプリケーションをコーディングしています。ここに私のコードは次のとおりです。h:inputText - 入力を豆に入れませんか?

register.xhtml:

 <fieldset> 
      <div> 
       <h:outputLabel class="Float" for="username" value="Username"/> 
       <h:inputText id="username" rendered="true" value="#{Register.username}" label="Username"> 
       <f:validateLength minimum="3" maximum="8"/> 
       </h:inputText> 
     </div> 
     <div> 
       <h:outputLabel class="Float" for="password" value="Passwort"/> 
       <h:inputText id="password" rendered="true" value="#{Register.password}" label="Passwort"> 
       <f:validateLength minimum="3" maximum="8"/> 
       </h:inputText> 
      </div> 
     </fieldset> 

<div id="buttons"> 
    <h:form id="buttons"> 
    <h:commandButton id="enter" accesskey="r" value="Registrieren" action="#{Register.registerPlayer()}" immediate="true"/> 
    <h:outputText value="#{msg.wrongpwd}" rendered="#{loginCtrl.loginfailed}" style="color: red"/> 
    <h:messages style="color: red"/> 
    </h:form> 
</div> 
</form> 
... 

Register.java:

public String getUsername() { 
    return username; 
} 

public String getPassword() { 
    return pwd; 
} 

public void registerPlayer() { 
    this.nameList.add(getUsername()); 
    this.passwordList.add(pwd); 
    System.out.println(getUsername() + " : " + pwd + " :successfully registered!!!"); 
} 

私の問題は、私はボタンを押したときに、私は出力として取得することです:

null:null:正常に登録されました!

これはなぜですか?

UPDATE 1 ------------------------------

OK IはHを使用した:formタグをしかし、私はまだnullを返す:

最初に:inputTextで書いてください - >豆はそれを読み込みます - >あなたはその値を操作することができます(例:リストに書き込む) ...

このサイクルで何が問題になりますか?または私のコード...

UPDATE 2 ------------------------------ マイsetterメソッド:

public void setUsername(String username) { 
    this.username = username; 
} 
public void setPassword(String pwd) { 
    this.pwd = pwd; 
} 

彼らは手の届かないところですが、なぜですか?

+0

の両方を含んでいるあなたは、あなたのBeanフィールドのためのセッターを持っていますか、例えば'setUsername(...)'?さらに、通常は、小文字の最初の文字で豆を呼び出す必要があります(アノテーションに明示的に 'Register'という名前を付けていない限り)。 –

+0

ええ私はセッターを持っていますが、私の* .xhtmlファイルでそれらを呼び出すことはありません。 – maximus

+0

いいえ、JSFによって自動的に呼び出されます。 setterメソッドの中にブレークポイントを設定し、それに達しているかどうかをチェックすることができます。 –

答えて

3

h:inputTextフィールドはフォーム内にある必要があります。以下試してください:

<h:form> 
    <fieldset> 
     <div> 
      <h:outputLabel class="Float" for="username" value="Username"/> 
      <h:inputText id="username" rendered="true" value="#{Register.username}" label="Username"> 
       <f:validateLength minimum="3" maximum="8"/> 
      </h:inputText> 
     </div> 
     <div> 
      <h:outputLabel class="Float" for="password" value="Passwort"/> 
      <h:inputText id="password" rendered="true" value="#{Register.password}" label="Passwort"> 
       <f:validateLength minimum="3" maximum="8"/> 
      </h:inputText> 
     </div> 
    </fieldset> 

    <div id="buttons"> 
     <h:commandButton id="enter" accesskey="r" value="Registrieren" action="#{Register.registerPlayer()}" immediate="true"/> 
     <h:outputText value="#{msg.wrongpwd}" rendered="#{loginCtrl.loginfailed}" style="color: red"/> 
     <h:messages style="color: red"/> 
    </div> 
</h:form> 

は今のフォームはinputTextフィールドとcommandButton

関連する問題