JSF从一个托管bean获取值到另一个托管bean

时间:2016-11-21 18:15:49

标签: java jsf el facelets

我刚创建了一个Login Managed Bean并且运行正常。它需要电子邮件和密码的价值。

现在,我的问题是如何将 LoginBean.java 获得的电子邮件的值传递给我的 UserBean.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()并将电子邮件作为参数提供给UserBean的{​​{1}}方法?

这可能吗?我问的原因是,我想确定登录用户的名字,并使用firstname(email)上的EL表达式显示“Hello YourFirstName ”之类的内容

之前我使用过swing,但我知道web的情况有所不同,所以我猜静态变量不是在JSF中从一个类到另一个类获取变量值的正确方法。

我的<h:outputText value="#{userBean.firstname}"/>方法有一个SQL查询

UserDAOImpl.getFirstName(email)

提前致谢。我很感激任何帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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

How to choose the right bean scope?

相关问题