Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 泽西2号,我的验证人打了两次电话_Validation_Javabeans_Cdi_Jersey 2.0 - Fatal编程技术网

Validation 泽西2号,我的验证人打了两次电话

Validation 泽西2号,我的验证人打了两次电话,validation,javabeans,cdi,jersey-2.0,Validation,Javabeans,Cdi,Jersey 2.0,在玻璃鱼4上使用Jersy 2。 我有一个自定义ConstraintValidator,它被调用来验证bean参数 使用@Context将Jersey资源正确地注入到ConstraintValidator。(将@Context更改为@Inject,以解决系统两次调用ConstraintValidator时资源为null的问题。) 问题调用isValid()方法两次我可以看到日志记录在调用update()方法之前被打印了两次 我添加了一个拦截器来进行一些调试日志记录。 首先调用constraint

在玻璃鱼4上使用Jersy 2。 我有一个自定义ConstraintValidator,它被调用来验证bean参数

使用
@Context
将Jersey资源正确地注入到
ConstraintValidator
。(将@Context更改为@Inject,以解决系统两次调用ConstraintValidator时资源为null的问题。)

问题调用
isValid()
方法两次我可以看到日志记录在调用
update()
方法之前被打印了两次

我添加了一个拦截器来进行一些调试日志记录。 首先调用constraintvalidator.isValid(),然后调用我的拦截器,然后再次调用constraintvalidator.isValid(),然后只调用我的REST资源方法

(此类不包含任何注入的资源。)


当您说注入的资源为空时,不清楚您指的是什么。您的示例中没有注入的资源。您是指方法参数吗?不,这个示例没有注入资源,但是在这个示例和其他用例中调用了两次isValid()方法(以及constraintvalidator的init方法)。我注入的资源是restejb资源,用于访问持久化单元?
public class StudyValidator implements ConstraintValidator<StudyCheck, StudyBeanREST> {

  private static final Logger log = Logger.getLogger(StudyValidator.class);

  @Override
  public void initialize(StudyCheck constraintAnnotation) {
  }

  @Override
  public boolean isValid(StudyBeanREST study, ConstraintValidatorContext context) {
    log.info("Validating study: " + study);
    Integer version = study.getVersion();
    if(version == null || version < 0) {
      return false;
    }
    return true;
  }
}
@Target({ElementType.PARAMETER,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {StudyValidator.class})
public @interface StudyCheck {
  String message() default "{error.version}";

  Class<?>[] groups() default {};

  Class<? extends Payload>[] payload() default {};
}
  @PUT
  @RolesAllowed({"management"})
  public StudyBeanREST update(@StudyCheck StudyBeanREST study) throws RecordNotFoundException, UpdateNotAllowedException {
    Study updated = studyEJB.update(study.getJpa());
    study.setJpa(updated);
    return study;
  }