我正在编写jsf中的注册表单:
* .xhtml文件中的:
<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>
</fieldset>
</h:form>
豆中的:
public String getPassword() {
return password;
}
public void setPassword(String pwd) {
this.password = pwd;
}
我设置了一个断点并注意到我的二传手没有到达?
为什么?
++++ 1.Update ++++++
Register.java:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
@ManagedBean(name="Register")
@SessionScoped
public class Register implements Serializable{
private String password = "Fill in!";
/** Creates a new instance of Customer */
public Register() {
//null
}
public String getPassword() {
return password;
}
public void setPassword(String pwd) {
this.password = pwd;
}
++++ 2.更新++++++
<div id="buttons">
<h:commandButton id="enter" accesskey="r" value="Registrieren" action="#{Register.registerPlayer()}" immediate="true"/>
</div>
++++ 3.Update ++++++ 我的表格代码:
<!-- Login-->
<h:form>
<h3><span xml:lang="en">Login</span> Daten </h3>
<div class="formblock">
<fieldset>
<div>
<h:outputLabel class="Float" for="username" value="Username"/>
<h:inputText id="username" rendered="true" value="#{Register.username}" label="Username">
</h:inputText>
</div>
<div>
<h:outputLabel class="Float" for="password" value="Passwort"/>
<h:inputSecret id="password" rendered="true" value="#{Register.password}" label="Passwort">
</h:inputSecret>
</div>
</fieldset>
</div>
<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>
答案 0 :(得分:1)
将您的h:commandButton
和<h:inputText
放在您尝试提交的相同表单中...
答案 1 :(得分:0)
我注意到您immediate="true"
上有commandButton
。这似乎是您的模型未更新的可能原因。
This blog entry似乎描述了类似的(如果不是相同的话)问题。现在,有一些解决方法,您可以使用bind
属性直接从组件获取提交的值,也可以在输入组件上使用immediate="true"
,但我认为最好的解决方案是不要在提交按钮上使用immediate
,除非你真的需要它。