@Valid

@Valid注解用于校验,所属的包: javax.validation.Valid.

你可以定义实体,在实体的属性上添加校验规则,在API接收数据时添加@Valid注解,这时你的实体将会开启一个校验的功能。

## 空检查

@NotEmpty:用在集合类上面;不能为null,而且长度必须大于0 

@NotBlank: 用在String上面;只能作用在String上,不能为null,而且调用trim()后,长度必须大于0 

@NotNull:用在基本类型上;不能为null,但可以为empty。

## 长度检查

@Size(min=,max=):验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  

不要错用了异常类型,比如在int上不可用@size

@Length(min=, max=) : 只适用于String 类型

##  Booelan检查

@AssertTrue:   验证 Boolean 对象是否为 true  

@AssertFalse:  验证 Boolean 对象是否为 false 

##  日期检查

@Past: 验证 Date 和 Calendar 对象是否在当前时间之前  

@Future: 验证 Date 和 Calendar 对象是否在当前时间之后  

@Pattern: 验证 String 对象是否符合正则表达式的规则

##  数值检查

建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为"" 时无法转换为int,但可以转换为Stirng为"",Integer为null

@Min:  验证 Number 和 String 对象是否大等于指定的值  

@Max:  验证 Number 和 String 对象是否小等于指定的值  

@DecimalMax:  被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度

@DecimalMin: 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度

@Digits:  验证 Number 和 String 的构成是否合法  

@Digits(integer=,fraction=):  验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。

BindingResult

Spring验证的错误返回

@Valid 和 BindingResult 是一一对应的,如果有多个@Valid,那么每个@Valid后面跟着的BindingResult就是这个@Valid的验证结果,顺序不能乱

 
 1.首先在参数实体类上面加上相关的验证信息
public class PublicUserForm implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
* 手机号
*/
@NotBlank(message = "{required}")
@Pattern(regexp = RegexpConstant.MOBILE_REG, message = "{mobile}")
private String telephone; /**
* 密码
*/
private String password;

2.controller层

 public ResponseResult regist(@Valid PublicUserForm publicUserForm, BindingResult bindingResult) throws Exception {

        //在这里,我们判断参数是否通过校验
if (bindingResult.hasErrors()) {
Map<String,String> errorMsg = new HashMap<>();
for (FieldError item:bindingResult.getFieldErrors()) {
errorMsg.put(item.getField(),item.getDefaultMessage());
}
//自定义的返回,并将错误信息返回
return new ResponseResult(false,200, JSON.toJSONString(errorMsg),errorMsg);
} PublicUser publicUser = publicUserService.regist(publicUserForm);
return new ResponseResult(true,200,"访问成功!",null);
}

最新文章

  1. .NET基础拾遗(2)面向对象的实现和异常的处理基础
  2. java 执行 jar 包中的 main 方法
  3. 基于MVC4+EasyUI的Web开发框架经验总结(6)--在页面中应用下拉列表的处理
  4. time模块目录下自己建立一个名为log的文件夹
  5. Openwrt安装软件的方法
  6. iOS开发中的错误整理,通过storyboard做项目,遇到view看不见,或者view被压缩的情况
  7. Nginx入门之两种handler函数的挂载方式
  8. 使用Android studio下载github上的工程及问题解决
  9. RF常用技巧随笔
  10. Input文本框属性及js
  11. CLR之委托的揭秘(一)
  12. GIT 查看 删除 添加远程库
  13. 【也许CTO并不是终点开篇】CTO也只不过是CTO罢了
  14. 假如你不小心干掉了系统,你该怎么办?(一次手贱的记录 ~ Ubuntu and Python3.6)
  15. SpringMvc+Mybatis+Maven+Mysql做一个CRUD的简单例子
  16. 20165305 学习基础和C语言基础调查
  17. 【java】之查看JVM参数的值
  18. 内存映射函数remap_pfn_range学习——示例分析(2)
  19. SqlServer触发器实现表的级联插入、级联更新
  20. Redis学习---Ubuntu下Redis的安装

热门文章

  1. Scratch少儿编程系列:(九)音乐高级技巧
  2. Spark-Core RDD转换算子-双Value型交互
  3. 7.golang的字符串 string
  4. 【转】Hadoop 1.x中fsimage和edits合并实现
  5. 小程序-调用公共js对象方法/ app.js
  6. 虚拟机的网卡基本配置和基本linux命令
  7. 锋利的JS解读——认识JQuery(一)
  8. Vue下简单分页及搜索功能
  9. nginx 启动关闭
  10. Java Web学习总结(4)HttpServletResponse