【问题标题】:JSF Obtaining value from one managed bean to another as argumentJSF 从一个托管 bean 获取值到另一个作为参数
【发布时间】:2016-11-21 18:15:49
【问题描述】:

我刚刚创建了一个登录托管 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() 方法并将电子邮件作为参数提供给UserBeanfirstname(email) 方法?

这可能吗?我问的原因是,我想识别登录用户的名字,并使用&lt;h:outputText value="#{userBean.firstname}"/&gt;

上的 EL 表达式显示类似“Hello YourFirstName”的内容

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

我的UserDAOImpl.getFirstName(email) 方法有一个 SQL 查询

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

提前致谢。如有任何帮助,我将不胜感激。

【问题讨论】:

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

标签: java jsf el facelets


【解决方案1】:

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

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

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

How to choose the right bean scope?

【讨论】:

    猜你喜欢
    • 2012-03-24
    • 2016-12-26
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    相关资源
    最近更新 更多