博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BindingResult是什么?BindingResult的使用方法详解
阅读量:4125 次
发布时间:2019-05-25

本文共 1840 字,大约阅读时间需要 6 分钟。

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作为校验结果绑定返回。

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

注意:

在实体类使用校验注解时,controller一定要使用bindingResult处理校验结果,且实体类作为查询参数时,避免被其他方法使用,不然的地方需要限制,有的没有,不需要限制的方法会报错。

转载地址:http://trhpi.baihongyu.com/

你可能感兴趣的文章
QML DropArea拖拉文件事件
查看>>
CORBA links
查看>>
读后感:>
查看>>
ideas about sharing software
查看>>
different aspects for software
查看>>
To do list
查看>>
Study of Source code
查看>>
如何使用BBC英语学习频道
查看>>
spring事务探索
查看>>
浅谈Spring声明式事务管理ThreadLocal和JDKProxy
查看>>
初识xsd
查看>>
java 设计模式-职责型模式
查看>>
构造型模式
查看>>
svn out of date 无法更新到最新版本
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
删除weblogic 域
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>