Java :inputText仅返回空值?(未到达设置器)
我正在用jsf编写注册表: 在*.xhtml文件中:Java :inputText仅返回空值?(未到达设置器),java,netbeans,jsf-2,jsf-1.2,Java,Netbeans,Jsf 2,Jsf 1.2,我正在用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: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>
我设置了一个断点,并注意到没有到达我的setter
为什么?
+++1.更新+++++
<div id="buttons">
<h:commandButton id="enter" accesskey="r" value="Registrieren" action="#{Register.registerPlayer()}" immediate="true"/>
</div>
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.更新+++++
我的表格代码:
<!-- 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>
登录日期
将您的h:commandButton
和我注意到您的命令按钮上有immediate=“true”
。这似乎是模型未更新的可能原因
似乎描述了一个类似的问题,如果不是相同的话。现在,有一些解决方法,可以使用bind
属性直接从组件获取提交的值,也可以对输入组件使用immediate=“true”
,但我认为最好的解决方案是,除非您确实需要,否则不要在您的提交按钮上使用立即
。请您向我们展示注册
bean的代码您输入和提交表单的数据是什么?我希望它能验证你的验证specified@JigarJoshi是的,我想这也是他的问题。顺便说一句,bean命名约定是以小写字母开头。在您的情况下,类名是Register
。在不指定名称的情况下,JSF会自动将其转换为带有小写字母的寄存器。所以不需要指定它,除非您希望它有所不同,比如registerBean
@user1248720您有comandButton吗?要提交值?@Fallup OP已经指定了带有注释的bean名称(除了约定之外,这没有问题),我只是扫描了注释,没有看到。你为什么不把它作为一个答案发布呢?因为它与评论中的讨论有关,我不确定这是否是问题的主要根源。在他确认成功后,我会把它作为答案贴出来:P,也许不是,我不太在乎名声。