【Java】使用@Valid+BindingResult进行controller参数校验
@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的验证结果,顺序不能乱
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);
}
【Java】使用@Valid+BindingResult进行controller参数校验的更多相关文章
- springboot @valid与@validated的参数校验使用总结
好久没在这平台写博客了,最近整理了这东西,先给出总结 // @Valid只能用在controller,@Validated可以用在其他被spring管理的类上 // @Valid可以加在成员变量上(本 ...
- spring mvc +@Valid +@RequestBody 来做参数校验返回400,并且不显示具体message 如何解决
参考文档: https://www.oschina.net/question/115867_2282711 谢谢原作者
- Java Bean Validation(参数校验) 最佳实践
转载来自:http://www.cnblogs.com 参数校验是我们程序开发中必不可少的过程.用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操作,保持程序的 ...
- SpringBoot 如何进行参数校验,老鸟们都这么玩的!
大家好,我是飘渺. 前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的! 阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数 ...
- 接口参数校验之@Valid与BindingResult
接口方法往往需要对入参做一些校验,从而判断入参是否合格,而javax.validation包为我们提供了一些常用的参数校验注解,使用起来很方便. 下面这个示例是检验入参对象中的password是否为空 ...
- 使用@Valid和BindingResult验证请求参数的合法性并处理校验结果
/** * 添加用户,使用@RequestBody将请求体映射到Action方法参数中 * 使用@Valid注解验证请求参数的合法性 * 使用BindingResult处理校验结果 * @param ...
- Java web服务端参数校验Javax.validation (springboot)
一.基本使用 Javax.validation是spring集成自带的一个参数校验接口.可通过添加注解来设置校验条件. 下面以springboot项目为例进行说明.创建web项目后,不需要再添加其他的 ...
- 【springboot】@Valid参数校验
转自: https://blog.csdn.net/cp026la/article/details/86495659 扯淡: 刚开始写代码的时候对参数的校验要么不做.要么写很多类似 if( xx == ...
- java自定义注解实现前后台参数校验
2016.07.26 qq:992591601,欢迎交流 首先介绍些基本概念: Annotations(also known as metadata)provide a formalized way ...
随机推荐
- 国家授时中心的NTP服务器地址 210.72.145.44
国家授时中心的NTP服务器地址 210.72.145.44
- zabbix_server.conf
ListenPort=10051 LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zab ...
- 2019CSP-S游记(?)
认识我的人都知道,我懒得写算法和模拟赛的博客,但是游记就不一样了,它比较好玩. Day0 中午随便收拾了下就坐高铁出发了,一个小时左右就到南昌了,随后坐公交,再步行到宾馆安置(也没多远). 宾馆离学校 ...
- JSP页面读取数据中的数据内容,出现乱码现象的解决方法
1.首先要确保JSP页面的编码已修改为“utf-8”的字符编码: 2.然后再在jsp页面上添加代码进行设置: 先用getBytes()方法读出数据,然后再new String()方法设置格式为“utf ...
- Python实现批量执行华为交换机脚本
#!/usr/bin/python3 # -*- coding:utf-8 -*- import paramiko import time ssh = paramiko.SSHClient() key ...
- 用yum快速搭建LAMP平台与虚拟域名配置
实验环境: [root@nmserver-7 html]# cat /etc/redhat-release CentOS release 7.3.1611 (AltArch) [root@nmserv ...
- HNUSTOJ-1253 Babelfish(字典树)
1253: Problem C: Babelfish 时间限制: 1 Sec 内存限制: 128 MB提交: 14 解决: 3[提交][状态][讨论版] 题目描述 Problem C: Babel ...
- HDU 1594 find the max
数序问题. 题意是说 一个数列 a1,a2,--ai,--an; x=i , y = ai:找两个点斜率绝对值.!最大. 第一次没找绝对值,--认真读题. .. x 每次加1 . 仅仅须要找 相邻的 ...
- Android 开发环境部署
引言 在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环 ...
- 【玩转Eclipse】——eclipse实现代码块折叠-类似于VS中的#region……#endregion
[玩转Eclipse]——eclipse实现代码块折叠-类似于VS中的#region……#endregion http://www.cnblogs.com/Micheal-G/articles/507 ...