【问题标题】:How could I access managed bean properties inside an ejb?如何访问 ejb 中的托管 bean 属性?
【发布时间】:2014-04-16 10:58:07
【问题描述】:

是否可以从 ejb 访问托管 bean 属性?我想从托管 bean 中获取一些值到我的 ejb 中。托管 bean 属性由 jsf 创建,效果很好,但在我的 ejb 中,托管 bean 属性总是为 null。

以下是我的部分代码:

托管 Bean: BeanCredentials

@ManagedBean
@RequestScoped
public class BeanCredentials implements Serializable {
    private String eMail;

    public String geteMail() {
        return eMail;
    }

    public void seteMail(String eMail) {
        this.eMail = eMail;
    }    
}

EJB: ServiceUser

@Stateful
public class ServiceUser {
    @PersistenceContext(unitName = "...")
    private EntityManager em;

    @Inject
    private BeanCredentials credentials;

    ...

    @Transactional
    public void login() {       
        if(this.credentials.geteMail() == null) { /* Always true */
            System.out.println(true);
        }
    }
}

public void login(); 是从一个额外的托管 bean 调用的,它为前端提供用户服务(即登录、注销、创建新用户、显示用户信息)。这个托管 bean 委托 ejb (ServiceUser) 来处理所有必要的用户任务

托管 Bean: BeanUser

@ManagedBean
@SessionScoped 
public class BeanUser implements Serializable {
    @EJB
    private ServiceUser serviceUser;

    ...

    public void login() {       
        this.serviceUser.login();
    }
}

在来自BeanCredentials 的值eMail 的jsf 中已填充,但我无法访问ejb ServiceUser 中的值。我是否误解了一些注释或概念?

如何访问 ejb 中的托管 bean 属性?常见的解决方案是什么?

【问题讨论】:

    标签: java jsf jakarta-ee javabeans


    【解决方案1】:

    您可以将值作为参数传递给任何 EJB 方法。

    例如,在典型的创建表单中,您使用 ManagedBean 字段捕获用户的所有输入,然后通过具有这些值的服务调用您的 EJB。如果属性数量很大,您可以使用 java 传输对象。

    【讨论】:

    • 我只是将凭据传递给 ejb,就像一个新用户(即this.serviceUser.create(user);)?
    • 是的,用户可以是一个简单的 java 传输对象,其中包含所需的字段和 getter/setter。
    • 是的,它不是托管 bean。它是一个简单的 POJO。您不会在 EJB 中混合您的演示代码。它应该能够独立工作,为任何其他可能不是 JSF、可能是移动应用程序等的客户端提供服务。
    【解决方案2】:

    您能否确保 javax.inject jar 存在于您的类路径中。如果您使用的是这个 maven,请尝试包括

    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>1</version>
    </dependency>
    

    【讨论】:

    • 是的,我正在使用javaee-api
    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2012-06-10
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多