4

是否可以将 JSF 托管 Bean 注入 EJB?我已将 JSF 托管 Bean 作为 @ManagedProperty 注入到另一个 JSF 托管 Bean 中。但是当我对 EJB 做同样的事情时,我得到一个空点异常。

4

1 回答 1

11

不,那是不可能的。仅在类(JSF 托管 bean)@ManagedProperty内工作。@ManagedBean您只能使用@EJB@Inject注入另一个 EJB 或 CDI 托管 bean(一个@Named类)。

但是,将 JSF 或 CDI 托管 bean 之类的前端类注入 EJB 之类的业务服务类中,在技术上是没有意义的。一个 EJB 的设计方式应该是它可以在不改变的情况下与一个完全不同的前端一起重用,比如 JAX-RS Web 服务,甚至是一个普通的 servlet。一个 EJB 绝对不应该有任何javax.faces.*导入/依赖(就像它不应该有任何javax.ws.rs.*也不应该javax.servlet.*一样)。

如果您打算将数据从 JSF 托管 bean 传递到 EJB,那么只需将其作为方法参数传递。此类数据通常具有 JPA 的风格,@Entity或者至少是返回实体的 ID/关键字。

于 2013-06-28T02:30:24.310 回答