自定义ConstraintValidator调用两次

时间:2018-02-12 17:25:14

标签: java spring hibernate validation

我正在使用Spring Boot 1.5.2.RELEASE版本,其中包括'hibernate-validator'5.3.4.Final version。

我遇到的问题是我的ConstraintValidator实现类执行了两次。

我附上了源代码。

  1. 接口
  2.   

    @RestController @Validated @FunctionalInterface公共接口   IBinRegistryApi {

    /**
     *
     * @param lookupRequest
     * @param nonce
     * @return
     */
    @PostMapping(value = "/xxx/yyy/zzz/XYZ", headers="Accept=application/json",
            produces= {MediaType.APPLICATION_JSON_VALUE},
            consumes= {MediaType.APPLICATION_JSON_VALUE})
    ResponseEntity getWalletByCard(NonceValid @RequestHeader(value = "X-Captcha-Nonce") String nonce); }
    
    1. 实施
    2.   

      @Component @Validated @ Slf4j public class BinRegistryApiImpl   实现IBinRegistryApi {       @覆盖       public ResponseEntity getWalletByCard(NonceValid @RequestHeader(value =“X-Captcha-Nonce”)String nonce){}

      1. NonceValid界面
      2.   

        @Target({ElementType.PARAMETER})@Retention(RetentionPolicy.RUNTIME)   @Documented @Constraint(validatedBy = NonceValidator.class)public   @interface NonceValid {       String message()默认“Nonce无效”;

        Class<?>[] groups() default {};
        
        Class<? extends Payload>[] payload() default {}; }
        
        1. NonceValidator类
        2.   

          public class NonceValidator实现ConstraintValidator {

          @Override
          public void initialize(NonceValid constraintAnnotation) {
              // no initialization required
          }
          
          @Override
          public boolean isValid(String nonce, ConstraintValidatorContext context) {
                **// twice here**
          } }
          

          有人遇到同样的问题吗?

          注1 :我确实看到我的自定义验证器属于2个组,即IBinRegistryAPI和默认。这就是为什么它被执行两次我相信

          注意2 :如果我将实施更改为Validator和Custom Group,则问题不会发生。

          谢谢,

0 个答案:

没有答案