请求对象参数中引用注解
@ValidateAnnotation(field = "title",length = 100,isNotNull = true)
private String title;
controller层中针对参数请求对象加入注解@Valid
@PostMapping("/add_employee_change_apply")
public void addEmployeeChangeApply(@RequestBody @Valid EmployeeChangeApplyRequest employeeChangeApplyRequest) throws CommonException {
}
自定义校验注解:
import javax.validation.Constraint;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
/**
* @Description:主要用于请求参数的非空及长度控制
*/
@Constraint(validatedBy = {ValidateAnnotation.FormatValidator.class}) //具体的实现
@Target( { java.lang.annotation.ElementType.METHOD,
java.lang.annotation.ElementType.FIELD })
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Documented
public @interface ValidateAnnotation {
String message() default "{org.hibernate.validator.constraints.NotEmpty.message}";
int length() default 0;
String field();
boolean isNotNull() default false;
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
class FormatValidator implements ConstraintValidator<ValidateAnnotation,Object> {
private int length;
private String field;
private boolean isNotNull = false;
@Override
public void initialize(ValidateAnnotation constraintAnnotation) {
length = constraintAnnotation.length();
field = constraintAnnotation.field();
isNotNull = constraintAnnotation.isNotNull();
}
@Override
public boolean isValid(Object o, ConstraintValidatorContext constraintValidatorContext) {
String message=constraintValidatorContext.getDefaultConstraintMessageTemplate();
if(o instanceof String) {
if(isNotNull){
if(StringUtil.isEmpty(o.toString())){
constraintValidatorContext.disableDefaultConstraintViolation();//禁用默认的message的值
constraintValidatorContext.buildConstraintViolationWithTemplate("The " + field + " is required").addConstraintViolation();
return false;
}
}
if(o.toString().length() > length && length != 0){
constraintValidatorContext.disableDefaultConstraintViolation();//禁用默认的message的值
constraintValidatorContext.buildConstraintViolationWithTemplate("The " + field + " exceed the recordable length").addConstraintViolation();
return false;
}
}else {
if(isNotNull){
if(null == o){
constraintValidatorContext.disableDefaultConstraintViolation();//禁用默认的message的值
constraintValidatorContext.buildConstraintViolationWithTemplate("The " + field + " is required").addConstraintViolation();
return false;
}
}
}
return true;
}
}
}