<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

使用:

public class LoginVo {

    @NotNull
@IsMobile
private String mobile; @NotNull
@Length(min=)
private String password; public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "LoginVo [mobile=" + mobile + ", password=" + password + "]";
}
}

使用注解就可以了

那么怎么自定i注解呢:

package com.cxy.validator;

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target; import javax.validation.Constraint;
import javax.validation.Payload; @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {IsMobileValidator.class })
public @interface IsMobile { boolean required() default true; String message() default "手机号码格式错误"; Class<?>[] groups() default { }; Class<? extends Payload>[] payload() default { };
}
@Constraint(validatedBy = {IsMobileValidator.class })可以看到这句话:
进行一个处理
package com.cxy.validator;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext; import com.cxy.util.ValidatorUtil;
import org.apache.commons.lang3.StringUtils; 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);
}
}
} }

其中使用到一个util

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();
} // public static void main(String[] args) {
// System.out.println(isMobile("18912341234"));
// System.out.println(isMobile("1891234123"));
// }
}
 

最新文章

  1. VS安装及单元测试
  2. iOS基础之网络请求相关
  3. Javascript中常用事件的命名
  4. 信号之kill和raise函数
  5. Quartz定时任务学习(七)Cron 触发器
  6. STRUTS2获得session和request
  7. HTML 5 &lt;embed&gt; 标签
  8. JAVA面向对象-----成员内部类的访问方式
  9. Java IO(四)——字符流
  10. load 过高分析办法
  11. MongoDB 教程(五):连接、新建数据库、删除数据库
  12. Java微信二次开发(一)
  13. 【BZOJ1024】[SCOI2009]生日快乐(搜索)
  14. 在IIS7上部署aspx网站
  15. Informatica 常用组件Lookup缓存之四 使用不高速缓存的查找或静态高速缓存
  16. Java 构造方法的执行过程(猜测)
  17. 微信小程序 --- 获取设备信息
  18. 大数据:Windows下配置flink的Stream
  19. vue elementui二级联动下拉选项demo
  20. 卸载oracle10g

热门文章

  1. Ubuntu管理员密码设置
  2. 【Java多线程系列随笔二】BlockingQueue
  3. 记录阿里云ECS搭建Wordpress(Centos7+LAMP)
  4. shell默认参数脚本
  5. eduCF#61 F. Clear the String /// 区间DP 消除连续一段相同字符 全部消完的最少次数
  6. 2018-6-17-win10-UWP-全屏
  7. Saks就const解释
  8. java idea 创建第一个java 程序
  9. c++ TCP 获取客户端IP
  10. PHP headers_list() 函数