是否可以将JSF管理的Bean注入到EJB中?我已经将JSF管理的Bean作为@ManagedProperty注入到另一个JSF管理的Bean中。但是当我尝试将其注入到EJB中时,会出现空指针异常。
是否可以将JSF管理的Bean注入到EJB中?我已经将JSF管理的Bean作为@ManagedProperty注入到另一个JSF管理的Bean中。但是当我尝试将其注入到EJB中时,会出现空指针异常。
不可能。 @ManagedProperty
只适用于在 @ManagedBean
类(JSF 托管的 bean)内部使用。您只能使用 @EJB
或 @Inject
注入另一个 EJB 或者 CDI 管理的 bean(@Named
类)。
但是,在业务服务类(如 EJB)中注入前端类(如 JSF 或 CDI 托管的 bean )在设计上没有技术意义。EJB 应该设计成这样,即它可以在完全不同的前端(如 JAX-RS webservice 或甚至纯净的 vanilla servlet)中重复使用而无需更改。EJB 绝对不应具有任何 javax.faces.*
的导入/依赖项(就像它不应具有任何 javax.ws.rs.*
或 javax.servlet.*
的一样)。
如果您打算将数据从 JSF 托管的 bean 传递到 EJB,则只需将它作为方法参数传递。这样的数据通常是 JPA @Entity
或至少返回实体的 ID/关键字。