2016-11-21 8 views
0

Login Managed Beanを作成して完全に動作しました。それは電子メールとパスワードの価値が必要です。JSF 1つのマネージドBeanから別のマネージドBeanへの値を引数として取得する

さて、私の問題は私のUserBean.javaLoginBean.javaによって得られた電子メールの値を渡す方法です。

index_customer.xhtml

<h:outputText value="#{userBean.firstname}"/> 

UserBean.java

@ManagedBean(name="userBean") 
public class UserBean { 
    private static String firstname; 
    private String lastname; 
    private String email; 
    private String password; 

    public String firstname(String email){ 
     String fname; 
     UserDAOImpl userDAOImpl = new UserDAOImpl(); 
     fname = userDAOImpl.getFirstName(email); 
     return fname; 
    } 

} 

LoginBean.java

@ManagedBean(name = "loginBean") 

public class LoginBean { 

    private String email; 

    public String getEmail() { 
     return email; 
    } 
} 

どのようにすることができます私はメソッドgetEmail()を呼び出し、UserBeanfirstname(email)メソッドに引数として電子メールを供給しますか?

これは可能ですか?私は尋ねた理由は、私が前にスイングで働い<h:outputText value="#{userBean.firstname}"/>

にEL式を使用してログインしたユーザーの名を特定し、「こんにちはYourFirstName」のようなものを見せたい、ですが、私は物事があることを知っていますWebとは異なるので、静的変数は、JSFのあるクラスから別のクラスに変数値を取得する正しい方法ではないと思います。

UserDAOImpl.getFirstName(email)方法は、事前に

String SQL = "SELECT firstname from customer WHERE emailcolumn = email; 

おかげでSQLクエリを持っています。私はどんな助けにも感謝しています。

+0

注射について学びます。 jsfを初めて使う人は、廃止予定のjsf固有のものの代わりにcdi managed beansを使用してください – Kukeltje

答えて

1

パラメータとしてfirstNameメソッドにgetEmailの戻り値を渡すだけです。

<h:outputText value="#{userBean.firstname(loginBean.email)}"/> 

もちろん、他にもいくつかの詳細があります。 この種のデータは、セッションスコープのBeanに保存する必要があります。そして、すべてのgetにはデータベースベースのアクセスがそれほど健康的ではありません。

How to choose the right bean scope?

関連する問題