2012-05-06 3 views
1

jsf-application을 코딩하고 있습니다.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 ------------------------------

괜찮아 나는 시간을 사용 하지만 난 여전히 null이 다시 :

먼저 : inputText -> 빈에서 그것을 읽습니다 - 당신이 그 값을 조작 할 수 있습니다 (예 : 쓰기 목록에 쓰기) ...

그주기에는 어떤 문제가 있습니까? 또는 내 코드 ...

업데이트 2 ------------------------------ 내 setter 메소드 :

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

범위를 벗어 났지만 그 이유는 무엇입니까?

+0

당신은 예를 들어, 여러분의 빈 필드에 대한 세터가 있습니까 'setUsername (...)'? 게다가 당신은 일반적으로 소문자 첫 글자로 bean을 호출 할 필요가있다. (주석에 명시 적으로 'Register'라고 지정하지 않았다면). –

+0

예 저는 setter가 있지만 내 * .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

관련 문제