public class CharactorNumValidator implements ConstraintValidator<CharactorNum, String> {
private String name;
@Override
public void initialize(CharactorNum charactorNum) {
name = charactorNum.value();
}
@Override
public boolean isValid(String propertyValue, ConstraintValidatorContext cxt) {
if (StringUtils.isBlank(propertyValue)) {
return false;
}
//适配姓名,中文限制在1-10,英文限制在1-20
if (name.equals("agentRecruitmentName") && propertyValue.matches("^[a-zA-Z]*")) {
return propertyValue.matches("^[a-zA-Z]{1,20}$");
}
String p = "^[\\u4e00-\\u9fa5]{1,10}$";
return propertyValue.matches(p);
}
}
@Documented
@Constraint(validatedBy = CharactorNumValidator.class)
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CharactorNum {
String message() default "请输入1-10个汉字";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String value() default "";
}
使用
@ApiModelProperty(value = "意向城市", required = true)
@CharactorNum
@NotNull(message = "意向城市不能为空")
private String city;
@ApiModelProperty(value = "姓名", required = true)
@CharactorNum(value = "agentRecruitmentName",message = "中文名限制在1-10个汉字,英文名请限制在1-20字符")
@NotNull(message = "姓名不能为空")
private String name;