1

私はJava EEを初めて使用し、netbeans 7.1.2を使用して最初のJava EEログインアプリケーションを開発しています。「Users」という名前のデータベーステーブルとエンティティがあり、いくつかのnadedクエリ、永続化ユニットを含むセッションBean「UsersFacade」、および以下の「authenticaate」という名前のメソッドがコードです

public Users authenticate(String login_id, String pwd) {       
    Users user = (Users) em.createNamedQuery("Users.authenticate")
            .setParameter("login_name", login_id) 
            .setParameter("password", pwd)
            .getResultList().get(0);

最後に、2 つのローカル メンバー login_name と password を含むセッション スコープの jsf マネージド Bean があり、jsf ページ login.xhtml はこれらのフィールドにバインドされています。この Bean には認証メソッドもあり、セッション Bean 'UserFacade' 認証メッセージを呼び出します。

    @ManagedBean
    @SessionScoped
    public class Login implements Serializable {
        private String login_name;
        private String password;

        private Users user;
        private @EJB UsersFacade user_services;

        public String authenticate() {
            user = user_services.authenticate(this.getLogin_name(),this.getPassword());
            if (user != null){            
                return "home";
            } else {
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage("login", new FacesMessage("Invalid UserName and Password"));
                return "login";
            }

この時点まで、すべてが正常に機能します。ただし、ホームページでは、値を変更してレコードを保存できるように、users テーブルのすべてのデータ メンバーを表示したいと考えています。ホームページで次のようにコーディングしました:

                <h:outputText value="Welcome #{login.user.login_name}" />

マネージド Bean でユーザー (エンティティ) を宣言しており、エンティティのプロパティにアクセスできるはずですが、アプリケーションを実行すると、次のエラーが発生します。

クラス「controller.Login」にはプロパティ「user」がありません

1 つのマネージド Bean に 3 つの異なる実装がある場合 (3 つの異なるロール/タイプのユーザーに 3 つの異なるユーザー インターフェイス)、私が間違っていることと、jsf ページをマネージド Bean にバインドする理想的な方法を提案できますか? JPA (エンティティ、セッション) と JSF マネージド Bean を使用しています。どうもありがとう。

4

1 に答える 1

2

クラス「controller.Login」にはプロパティ「user」がありません

言及されたクラスに言及されたプロパティの getter メソッドがない場合、このエラーが発生します。有効な getter メソッドを指定したことを確認してください。

public Users getUser() {
    return user;
}
于 2012-06-09T11:32:56.243 に答える