2016-11-21 81 views
0

我刚刚创建了一个登录托管Bean并且完美地工作。它取得了电子邮件和密码的价值。JSF从一个托管bean获取值作为参数

现在,我的问题是如何通过由LoginBean.javaUserBean.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)方法的参数?

这可能吗?我问的原因是,我要确定谁登录的用户的名字和显示类似“你好YourFirstName”使用EL表达式上<h:outputText value="#{userBean.firstname}"/>

我与前摆的工作,但我知道,事情与web不同,所以我猜静态变量不是在JSF中从一个类到另一个类获取变量值的正确方法。

UserDAOImpl.getFirstName(email)方法有一个SQL查询,这是事先

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

感谢。我会很感激任何帮助。

+0

了解注射。如果您是jsf的新手,请使用cdi托管的bean,而不要使用(某种)已弃用的特定于jsf的bean – Kukeltje

回答

1

只需将getEmail的返回值作为参数传递给firstName方法即可。

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

但当然还有一些其他的细节。 您应该将这种数据保存在会话范围的bean中。而且DataBase在每一次获取都不那么健康。

How to choose the right bean scope?