<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
public class LoginVo {
//框架自带注解
@NotNull
//自定义注解,验证手机号格式
@IsMobile
private String mobile;
@NotNull
@Length(min=32)
private String password;
}
@RequestMapping("/do_login")
@ResponseBody
//在LoginVo上添加Valid注解
public Result<Boolean> doLogin(HttpServletResponse response, @Valid LoginVo loginVo) {
log.info(loginVo.toString());
//登录
userService.login(response, loginVo);
return Result.success(true);
}
自定义注解使用
手机号格式验证
public class ValidatorUtil {
private static final Pattern mobile_pattern = Pattern.compile("1\\d{10}");
public static boolean isMobile(String src) {
if(StringUtils.isEmpty(src)) {
return false;
}
Matcher m = mobile_pattern.matcher(src);
return m.matches();
}
}
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {IsMobileValidator.class })
public @interface IsMobile {
//true必须得传值
boolean required() default true;
String message() default "手机号码格式错误";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
public class IsMobileValidator implements ConstraintValidator<IsMobile, String> {
private boolean required = false;
public void initialize(IsMobile constraintAnnotation) {
required = constraintAnnotation.required();
}
public boolean isValid(String value, ConstraintValidatorContext context) {
if(required) {
return ValidatorUtil.isMobile(value);
}else {
if(StringUtils.isEmpty(value)) {
return true;
}else {
return ValidatorUtil.isMobile(value);
}
}
}
}
更多示例
https://blog.csdn.net/ONROAD0612/article/details/72518467
@NotBlank、@NotNull、@NotEmpty三者之间的区别
-
1.@NotNull:不能为null,但可以为空字符串
-
2.@NotEmpty:不能为null,并且长度必须大于0
-
3.@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0