是否可以将JSF Managed Bean注入EJB?我已将JSF Managed Beans注入另一个JSF Managed Bean作为@ManagedProperty。但是当我对EJB做同样的事情时,我得到一个零点异常。
答案 0 :(得分:11)
不,那是不可能的。 @ManagedProperty
仅适用于@ManagedBean
类(JSF托管bean)。您只能使用@EJB
或@Inject
注入另一个EJB或CDI托管bean(@Named
类)。
然而,从技术上讲,在像EJB这样的业务服务类中注入像JSF或CDI托管bean这样的前端类是没有意义的。 EJB应该以这样的方式设计,即它可以在没有更改的情况下重用一个完全不同的前端,如JAX-RS Web服务,甚至是普通的servilla servlet。 EJB绝对不应该有任何javax.faces.*
导入/依赖项(就像它不应该有javax.ws.rs.*
或javax.servlet.*
那样)。
如果您打算将数据从JSF托管bean传递到EJB,那么只需将其作为方法参数传递。此类数据通常具有JPA @Entity
的风格或至少返回实体的ID /关键字。