0

私は最初の JSF アプリケーションを作成しており、ログイン ページを実装しています。しかし、ログインとパスワードを使用してフォームを送信するときに問題が発生します。私はJSF 2.0を使用しています

私は次のフォームを持っています:

<h:form>
            <h:panelGrid columns="2">
                <p:outputLabel for="txt_login" value="Login" />
                <p:inputText id="txt_login" value="#{loginBean.login}"/>
                <p:outputLabel for="txt_senha" value="Senha" />
                <p:inputText id="txt_senha" value="#{loginBean.senha}"/>
            </h:panelGrid>
            <h:panelGrid columns="2">
                <p:commandButton value="Login" action="#{loginBean.efetuaLogin}" />
                <p:commandButton value="Cancelar" action="cancelar" />
            </h:panelGrid>
</h:form>

そして、ManagedBean:

@ManagedBean
public class LoginBean {

private String login;
private String senha;

public String getSenha() {
    return senha;
}

public void setSenha(String senha) {
    System.out.println("SENHA = " + this.getSenha());
    this.senha = senha;
}

public String getLogin() {
    return login;
}

public void setLogin(String login) {
    System.out.println("USER = " + this.getLogin());
    this.login = login;
}

public String efetuaLogin() {
    Usuario user = new Usuario(this.login, this.senha);
    System.out.println("USER = " + this.getLogin() + " SENHA = " + this.getSenha());
    UsuarioController.getInstance().save(user);
    return "sucesso";

}

public String cadastar() {
    Usuario user = new Usuario(this.login, this.senha);
    System.out.println("USER = " + this.login + " SENHA = " + this.senha);
    UsuarioController.getInstance().save(user);
    return "sucesso";
}

}

これらのフォームが送信されると、マネージド Bean に対して null が渡されます。なぜそれが起こるのですか?

4

2 に答える 2

0

あなたはSystem.out.printlnあまりにも早く電話をかけているので、あなたは得ていると思っていますがnull、そうではありません. 例:

public void setSenha(String senha) {
    System.out.println("SENHA = " + this.getSenha());
    this.senha = senha;
}

する必要があります

public void setSenha(String senha) {
    this.senha = senha;
    System.out.println("SENHA = " + this.getSenha());
}

と同じことsetLogin(String login)

UPDATE #2 あなたの問題は別の場所にあるはずです。プライムフェイスに正しい名前空間を使用しているかどうかを確認してください

xmlns:p="http://primefaces.org/ui

私が知る限り、primefaces のコンポーネントはすべて機能しています。例として、ここに私のコードがあります。.xhtml投稿したオリジナルに対して実行してみてください。唯一の違いは、私が上であなたに言った編集であり、私にLoginBeanはありませんUsuarioController.getInstance().save(user);

import javax.faces.bean.ManagedBean;

@ManagedBean
public class LoginBean {

    private String login;
    private String senha;

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
        System.out.println("SENHA = " + this.getSenha());

    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
        System.out.println("USER = " + this.getLogin());
    }

    public String efetuaLogin() {
        User user = new User(this.login, this.senha);
        System.out.println("USER = " + this.getLogin() + " SENHA = " + this.getSenha());
        System.out.println("ACTUAL USER = " + user.getLogin() + " ACTUAL SENHA = " + user.getSenha());
        return "sucesso";
    }

    public String cadastar() {
        return "sucesso";
    }
}


public class User {
    private String login; 
    private String senha; 

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public User(String login, String senha) {
        this.login = login;
        this.senha = senha;
    }

    public User() {
    }
}
于 2013-06-30T18:36:06.520 に答える
0

ManagedBean のスコープを追加し、ログイン用に add を追加し@RequestScopedます。<h:inputTextパスワードに使用しました。<h:inputSecret/>パスワードに使用してください。

于 2013-06-30T17:35:01.687 に答える