0

私は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>

Beanで:

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.Update ++++++

<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>
4

2 に答える 2

1

h:commandButton送信しようとしているのと同じフォームにとを配置します<h:inputText...

于 2012-05-07T11:51:58.590 に答える
0

immediate="true"私はあなたがあなたの上にいることに気づきましたcommandButton。これは、モデルが更新されていない理由の可能性が高いようです。

このブログエントリは、同じではないにしても、同様の問題を説明しているようです。bind現在、これにはいくつかの回避策があります。属性を使用してコンポーネントから直接送信された値を取得するか、入力コンポーネントでも使用できますが、送信immediate="true"に使用しないのが最善の解決策だと思います。immediateあなたが本当にそれを必要としない限り、ボタン。

于 2012-05-07T12:47:49.967 に答える