程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用@ EJB,@ PersistenceContext,@ Inject,@ Autowired注入@FacesValidator大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使用@ EJB,@ PersistenceContext,@ Inject,@ Autowired注入@FacesValidator?

开发过程中遇到如何使用@ EJB,@ PersistenceContext,@ Inject,@ Autowired注入@FacesValidator的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用@ EJB,@ PersistenceContext,@ Inject,@ Autowired注入@FacesValidator的解决方法建议,希望对你解决如何使用@ EJB,@ PersistenceContext,@ Inject,@ Autowired注入@FacesValidator有所启发或帮助;

@FacesValIDator不被注入容器管理。你需要使其成为托管bean。使用Spring @Component,CDI @named或JsF @managedBean代替,@FacesValIDator便使其成为托管bean,从而有资格进行依赖项注入。

例如,假设你要使用JsF @managedBean

@managedBean
@requestScoped
public class EmailExistValIDator implements ValIDator {
    // ...
}

你还需要通过#{name}EL 将其作为托管bean进行引用,而不是作为硬编码字符串中的验证器ID 进行引用。这样

<h:inputText ... valIDator="#{emailExistValIDator.valIDatE}" />

要么

<f:valIDator binding="#{emailExistValIDator}" />

代替

<h:inputText ... valIDator="emailExistValIDator" />

要么

<f:valIDator valIDatorID="emailExistValIDator" />

这确实很尴尬。JsF伙计们已经证实了这一令人尴尬的监督,他们将使@FacesValIDator(和@FacesConverter)合格的目标成为即将到来的JsF。2.22.3,另请参阅JsF规范发行763。对于EJB,有一种解决方法,可以从JNDI手动获取它,另请参见在@FacesConverter和@FacesValIDator中获取@EJB。如果碰巧使用了CDI扩展MyFaces CODI,那么你也可以通过@Advanced在类上添加注释来解决它。

解决方法

我怎样才能像注入的依赖@EJB@PersistenceContext@Inject@AutoWired,等的@FacesValidator?在我的特定情况下,我需要通过以下方式注入Spring托管的bean @AutoWired

@FacesValidator("emailExistValidator")
public class EmailExistValidator implements Validator {

    @Autowired
    private UserDao userDao;

    // ...
}

但是,它没有注入,而是保留了null,导致java.lang.NullPointerException。似乎@EJB@PersistenceContext并且@Inject也不起作用。

如何在验证器中注入服务依赖项,以便可以访问数据库?

大佬总结

以上是大佬教程为你收集整理的如何使用@ EJB,@ PersistenceContext,@ Inject,@ Autowired注入@FacesValidator全部内容,希望文章能够帮你解决如何使用@ EJB,@ PersistenceContext,@ Inject,@ Autowired注入@FacesValidator所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。