在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ springBoot 怎么自定義hibernate-validator 驗(yàn)證注解

springBoot 怎么自定義hibernate-validator 驗(yàn)證注解

代碼描述:

自定義注解

@Target({ElementType.METHOD, ElementType.FIELD,ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = DigitsInArrayValidator.class)
public @interface DigitsInArray {
    int [] array() default {-1,1};
    String message() default "您的數(shù)據(jù)不合法";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

注解驗(yàn)證實(shí)現(xiàn)類

public class DigitsInArrayValidator implements ConstraintValidator<DigitsInArray,Integer> {

    private String message;
    private int [] array;
    @Override
    public void initialize(DigitsInArray digitsInArray) {
        this.message = digitsInArray.message();
        this.array = digitsInArray.array();
        System.out.println(this.array);
    }

    @Override
    public boolean isValid(Integer digit, ConstraintValidatorContext constraintValidatorContext) {
        if(!Objects.isNull(this.array)) {
            for (int i : array) {
                if(digit == i) {
                    return true;
                }
            }
            constraintValidatorContext.disableDefaultConstraintViolation();
            constraintValidatorContext.buildConstraintViolationWithTemplate("值:"+ digit +"不合法").addConstraintViolation();
            return false;
        }
        return false;
    }
}

controller

 @PutMapping("/status/{id}")
    public Object updateProductionStatus(@PathVariable("id") String productionId, @RequestBody @DigitsInArray Integer status, BindingResult result) {
        JSONObject jsonObject = new JSONObject();
        String error = ValidateResultPush.validateHasError(result);
        if(!StringUtils.isEmpty(error)) {
            jsonObject.put("code",HttpEnum.E_400.getCode());
            jsonObject.put("msg",error);
            return jsonObject;
        }
        productionService.updateProductionStatus(productionId,status);
        jsonObject.put("code", HttpEnum.OK.getCode());
        jsonObject.put("msg",HttpEnum.OK.getMsg());
        return jsonObject;
    }

上面代碼,沒有效果?。?/p>

回答
編輯回答
懷中人

方法參數(shù)級(jí)別的校驗(yàn)
1.注冊(cè)一個(gè)Bean,org.springframework.validation.beanvalidation.MethodValidationPostProcessor
2.在需要校驗(yàn)的類上加上@Validated注解
3.自定義全局異常處理器處理異常,即implements HandlerExceptionResolver

2017年9月22日 04:36