BindingResult用在实体类校验信息返回结果绑定。

实体类常用的校验注解有:

@Null  被注释的元素必须为null
@NotNull  被注释的元素不能为null
@AssertTrue  该字段只能为true
@AssertFalse  该字段的值只能为false
@Min(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin("value")  被注释的元素必须是一个数字,验证小数的最小值
@DecimalMax("value")  被注释的元素必须是一个数字,验证小数的最大值
@Size(max,min)  查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等
@Digits(integer,fraction) 检查是否是一种数字的整数、分数,小数位数的数字
@Past  被注释的元素必须是一个过去的日期
@Future  被注释的元素必须是一个将来的日期
@Pattern(regexp = "[abc]") 被注释的元素必须符合指定的正则表达式。
@Email 被注释的元素必须是电子邮件地址
@Length(max=5,min=1,message="长度在1~5")    检查所属的字段的长度是否在min和max之间,只能用于字符串
@NotEmpty  被注释的字符串必须非空
@Range  被注释的元素必须在合适的范围内

@CreditCardNumber 对信用卡号进行一个大致的验证

@NotBlank 不能为空,检查时会将空格忽略

@NotEmpty 不能为空,这里的空是指空字符串

以上注解在使用时,都可以设置自定义message提示信息。

举个栗子:

@ApiModel(value ="TestEntity")
public class TestEntity implements Serializable{private static final long serialVersionUID = 1L;@ApiModelProperty(value = "唯一id")private Long id;@Size(max=10,message="最大长度为10")@ApiModelProperty(value = "名称")private String name;@NotNull(message="参数不能为空")@ApiModelProperty(value = "年龄")private Integer age;//getter setter...}

Controller层:

public class TestController {@PostMapping("/a")@ApiOperation(value = "测试", notes = "")public void test(@RequestBody @Valid TestEntity test,BindingResult bindingResult) {System.out.println(test.toString());if (bindingResult.hasErrors()) {throw new 自定义Exception("错误提示码",bindingResult.getFieldError().getDefaultMessage());}}
}

@Valid和BindingResult配套使用,@Valid用在参数前,BindingResult作为校验结果绑定返回,如果@Valid不起作用,换@Validated试试。

bindingResult.hasErrors()判断是否校验通过,校验未通过,bindingResult.getFieldError().getDefaultMessage()获取在TestEntity的属性设置的自定义message,如果没有设置,则返回默认值"javax.validation.constraints.XXX.message"。

-------------------------------------2022-08-05更新以下内容-----------------------------------------------------------

使用@RestControllerAdvice注解进行统一校验判断,就不用在每个方法上都写BindingResult bindingResult和异常判断。

@RestControllerAdvice
public class ControllerExceptionAdvice {@ExceptionHandler({BindException.class})public ResultVo MethodArgumentNotValidExceptionHandler(BindException e) {// 从异常对象中拿到ObjectError对象ObjectError objectError = e.getBindingResult().getAllErrors().get(0);return new ResultVo(ResultCode.VALIDATE_ERROR, objectError.getDefaultMessage());}
}
@Getter
public enum ResultCode implements StatusCode{SUCCESS(1000, "请求成功"),FAILED(1001, "请求失败"),VALIDATE_ERROR(1002, "参数校验失败"),RESPONSE_PACK_ERROR(1003, "response返回包装失败");private int code;private String msg;ResultCode(int code, String msg) {this.code = code;this.msg = msg;}
}
@Data
public class ResultVo {// 状态码private int code;// 状态信息private String msg;// 返回对象private Object data;// 手动设置返回vopublic ResultVo(int code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}// 默认返回成功状态码,数据对象public ResultVo(Object data) {this.code = ResultCode.SUCCESS.getCode();this.msg = ResultCode.SUCCESS.getMsg();this.data = data;}// 返回指定状态码,数据对象public ResultVo(StatusCode statusCode, Object data) {this.code = statusCode.getCode();this.msg = statusCode.getMsg();this.data = data;}// 只返回状态码public ResultVo(StatusCode statusCode) {this.code = statusCode.getCode();this.msg = statusCode.getMsg();this.data = null;}
}

BindingResult的使用相关推荐

  1. spring MVC做form提交Neither BindingResult nor plain target object for bean name 'command' available...

    我的改正是在form表单上添加了个modelAttribute="employee"然后在 @RequestMapping(value="/emp",metho ...

  2. springMvc 的参数验证 BindingResult result 的使用

    http://blog.sina.com.cn/s/blog_6829be5c0101alxh.html 非常详细的一篇讲解 并且值得深入探讨 http://bbs.csdn.NET/topics/3 ...

  3. java中reject方法作用_Java BindingResult.rejectValue方法代碼示例

    本文整理匯總了Java中org.springframework.validation.BindingResult.rejectValue方法的典型用法代碼示例.如果您正苦於以下問題:Java Bind ...

  4. Java笔记-使用BindingResult把表单错误传出来

    目录 基本概念 演示及代码 基本概念 这里在特别是在提交表单数据的数据很常见,当提交的数据不完整的时候,也要回Json,并且把错误代码发出来,这里就的使用 BindingResult. 演示及代码 正 ...

  5. 非空验证方法(多值)和BindingResult提示验证信息

    非空验证方法(多值) function save() {//保存记录checkBlank([['type_name','类型名称'],['type_code','类型标识']]);if(!isNumb ...

  6. 使用Aop管理所有Valid结构bindingResult

    在使用springMVC的时候有用到Valid注解,也就对应着有了多个BindingResult. 而有时候Validator规则是在bean里面定义的,这个时候bindingResult就是自动验证 ...

  7. Spring MVC BindingResult异常

    Spring MVC BindingResult异常 参考文章: (1)Spring MVC BindingResult异常 (2)https://www.cnblogs.com/yanghuahui ...

  8. IllegalStateException: Errors/BindingResult argument declared without preceding model attribute. Che

    这是在很久之前遇到的一个错误. 错误分析 Spring规定:Errors接口或者BindingResult对象应该刚好紧跟在@ModelAttribute声明的对象后面,这样程序才能正确的完成绑定. ...

  9. 使用@Valid+BindingResult进行controller参数校验

    由于controller是调用的第一层,经常参数校验将在这里完成,常见有非空校验.类型校验等,常见写法为以下伪代码: public void round(Object a){if(a.getLogin ...

  10. 常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,嵌套验证等《使用|CSDN创作打卡》

    文章目录 一.常用注解@NotEmpty,@NotBlank,@NotNull介绍 二.@Valid与@Validated的使用与区别 2.1@Valid与@Validated区别: 2.2嵌套验证 ...

最新文章

  1. Android加载大图片OOM异常解决
  2. 懒加载中进行字典转模型
  3. 7-4 求链式线性表的倒数第K项(最佳解法)(List容器)
  4. Java内存不足之PermGen space错误探究
  5. 数据3分钟丨Databricks与Snowflake开撕;阿里云多款自研数据库支撑首个“100%云上双11”...
  6. activex java 控件_swt java 内嵌ActiveX控件
  7. oppor829t如何刷机_科普OPPO R1 R829T的线刷教程及最简单的三星手机刷机教程
  8. 拆解一个老式电感电容表
  9. 电脑系统相关问题收录(windows10)
  10. 黑苹果16g内存够用吗_刚脱坑黑苹果,给想装黑苹果的几个建议
  11. 负载均衡及其常见实现方式
  12. java马里奥_java马里奥毕业设计
  13. AMADA阿玛达工控机维修折弯机主机维修R027-00主板故障处理
  14. android arcgis使用自定义图片背景底图(tif图片制作)
  15. PS - 蓝色发光字
  16. 计算机的简史:从数字运算到强大的现代机器
  17. 常用的arm汇编指令(3) -学无止尽,积土成山,积水成渊
  18. TPC/IP 协议头部说明
  19. Taro跨端开发探索19——商城小程序确认订单页面开发
  20. 开关、电机、断路器、电热偶、电表接线图大全

热门文章

  1. 【原创smarty仿淘宝商品图片轮播+放大镜效果】
  2. 2020年初冠状病毒大事记随笔
  3. 一文读懂卷积神经网络中的1x1卷积核
  4. 洛谷P2184——贪婪大陆
  5. 2019/11/08 校内模拟
  6. MySQL查询结果中Duration Time和Fetch Time的含义
  7. 2021-02-18docker
  8. 华为服务变革转型ITR流程再造的核心精髓许浩明老师一篇文章总结!
  9. linux双击启动脚本文件
  10. 文本框、密码框、文本域