Jakarta ee CDI在验证器中不工作
我想将Servlet上下文注入实体中的验证器。但是返回null 例如: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。。我认
@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。