Java :inputText仅返回空值?(未到达设置器)

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"/>

我正在用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>
我设置了一个断点,并注意到没有到达我的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,也许不是,我不太在乎名声。