This commit is contained in:
fanxb 2021-10-08 23:45:27 +08:00
parent 85e40bf56d
commit ca3efd0073
4 changed files with 88 additions and 0 deletions

View File

@ -8,6 +8,7 @@ import com.fanxb.exceptiontest.entity.exception.CustomBusinessException;
import com.fanxb.exceptiontest.entity.vo.TestBody; import com.fanxb.exceptiontest.entity.vo.TestBody;
import com.fanxb.exceptiontest.entity.vo.TestBody2; import com.fanxb.exceptiontest.entity.vo.TestBody2;
import com.fanxb.exceptiontest.entity.vo.TestBody3; import com.fanxb.exceptiontest.entity.vo.TestBody3;
import com.fanxb.exceptiontest.entity.vo.TestBody4;
import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.Range;
import org.springframework.validation.BindException; import org.springframework.validation.BindException;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -65,4 +66,12 @@ public class TestController {
return null; return null;
} }
/**
* 自定义校验
*/
@PostMapping("/test6")
public Result test6(@Validated @RequestBody TestBody4 testBody) {
return null;
}
} }

View File

@ -0,0 +1,26 @@
package com.fanxb.exceptiontest.entity.validation;
import com.fanxb.exceptiontest.entity.validation.annotation.CustomCheck;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
/**
* @author fanxb
* @date 2021-10-08 23:27
*/
public class CustomCheckValidator implements ConstraintValidator<CustomCheck, String> {
private String param1;
@Override
public void initialize(CustomCheck constraintAnnotation) {
//在此获取校验参数
param1 = constraintAnnotation.param1();
ConstraintValidator.super.initialize(constraintAnnotation);
}
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
return param1 != null && param1.equals(s);
}
}

View File

@ -0,0 +1,33 @@
package com.fanxb.exceptiontest.entity.validation.annotation;
import com.fanxb.exceptiontest.entity.validation.CustomCheckValidator;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author fanxb
* @date 2021-10-08-23:22
*/
@Target({ElementType.FIELD}) //作用于字段
@Retention(RetentionPolicy.RUNTIME)//生命周期
@Constraint(validatedBy = CustomCheckValidator.class)//校验逻辑实现类
public @interface CustomCheck {
String message() default "自定义校验默认错误提示";
/**
* 自定义参数可传递到校验实现类CustomCheckValidator中
*/
String param1() default "";
Class<?>[] groups() default {}; //用于分组校验
Class<? extends Payload>[] payload() default {};
}

View File

@ -0,0 +1,20 @@
package com.fanxb.exceptiontest.entity.vo;
import com.fanxb.exceptiontest.entity.consistant.Insert;
import com.fanxb.exceptiontest.entity.consistant.Update;
import com.fanxb.exceptiontest.entity.validation.annotation.CustomCheck;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author fanxb
* @date 2021-09-28-下午4:29
*/
@Data
public class TestBody4 {
@CustomCheck(message = "此参数固定为fff", param1 = "fff")
private String param1;
@CustomCheck(message = "此参数固定为ggg", param1 = "ggg")
private String param2;
}