Jakarta ee CDI在验证器中不工作

Jakarta ee CDI在验证器中不工作,jakarta-ee,servlets,entity,cdi,validation,Jakarta Ee,Servlets,Entity,Cdi,Validation,我想将Servlet上下文注入实体中的验证器。但是返回null 例如: @Entity class Test{ @TestValidator() int something; } TestValidator implements ConstraintValidator{ @Context ServletContext ctx } 场景是操作来自facelet。然后根据用户的操作调用托管bean的操作。我想将该操作的ServletContext传递给实体类中注释的验证器,但返回null。。我认

我想将Servlet上下文注入实体中的验证器。但是返回null

例如:

@Entity
class Test{
@TestValidator()
int something;
}

TestValidator implements ConstraintValidator{
@Context ServletContext ctx
}
场景是操作来自facelet。然后根据用户的操作调用托管bean的操作。我想将该操作的ServletContext传递给实体类中注释的验证器,但返回null。。我认为Servlet上下文是应用程序范围的

问题:有没有一种方法可以访问验证器中的Servlet上下文


谢谢

不是一个真正的答案,但评论太多了:

您的代码示例看起来有点支离破碎。您确定创建了验证程序吗?这将导致代码看起来更像这样:

public class MyClass {

@Inject
MyValidator validator;

...

}

另外,您必须小心使用实体bean—它们有自己独立的生命周期,因此不鼓励在实体bean中使用注入。

我创建了一个名为ContextListener的类,该类实现了ServletContextListener

我创建了一个静态字段和方法来访问验证器中的ServletContext

 public class ContextListener implements ServletContextListener {
        @Override
        public void contextInitialized(ServletContextEvent sce) { 
            sc = sce.getServletContext();
        }
        @Override
        public void contextDestroyed(ServletContextEvent sce) { 
        }
        private static ServletContext sc;

        public static ServletContext getServletContext(){
            return sc;
        }
    }


    TestValidator implements ConstraintValidator{ 
     ServletContext sc = ContextListener.getServletContext(); 
    } 

但请分享任何优雅的答案。谢谢

我创建了一个名为ContextListener的类,该类实现了ServletContextListener,我创建了一个静态字段和方法来访问验证器中的ServletContext,但请分享任何优雅的答案。感谢分享他们有不同的生命周期。。。。我有一个办法来获取ServletContext。