我正在编写一个jsf-application。这是我的代码:
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:成功注册!!!
为什么会这样?
更新1 ------------------------------
好吧我使用了h:form标签,但我仍然得到null:
这是我认为jsf如何工作的循环: 第一:写入inputText - &gt;豆子读它 - &gt;你可以操纵那个值(比如把它写在一个列表中)......
这个循环出了什么问题?或者我的代码......
更新2 ------------------------------ 我的二传手套方法:
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String pwd) {
this.pwd = pwd;
}
它们遥不可及,但为什么?
答案 0 :(得分: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
s