:inputText只返回null?(未达到setter)

时间:2012-05-07 11:02:02

标签: 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: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>

2 个答案:

答案 0 :(得分:1)

将您的h:commandButton<h:inputText放在您尝试提交的相同表单中...

答案 1 :(得分:0)

我注意到您immediate="true"上有commandButton。这似乎是您的模型未更新的可能原因。

This blog entry似乎描述了类似的(如果不是相同的话)问题。现在,有一些解决方法,您可以使用bind属性直接从组件获取提交的值,也可以在输入组件上使用immediate="true",但我认为最好的解决方案是不要在提交按钮上使用immediate,除非你真的需要它。