就是想试一下自定义的注解
一个简单的springboot工程
浏览器发请求后,http://localhost:9999/savePhone?phone=123
没有任何错误产生,校验实现的断点都没走
why????
自定义注解,校验电话号
@Documented
@Constraint(validatedBy = PhoneValidator.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({METHOD, TYPE, ANNOTATION_TYPE, CONSTRUCTOR, FIELD, PARAMETER})
public @interface Phone {
String message() default "电话号格式错误";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
电话号校验实现,电话号必须有长度,必须是数字,长度为11位
@Component
public class PhoneValidator implements ConstraintValidator<Phone, String> {
@Override
public boolean isValid(String content, ConstraintValidatorContext constraintValidatorContext) {
return StringUtils.hasLength(content) && NumberUtil.isNumber(content) && content.length() == 11;
}
}
controller
@Validated
@RestController
public class ValidationController {
@GetMapping("/savePhone")
public R<String> savePhone(@RequestParam("phone") @Phone(message = "请检查电话号!") String phone) {
return R.success();
}
}
依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>7.0.4.Final</version>
</dependency>