记一个简单又好用的api:bindingresult
bindingresult使用起来很简单,一般在controller中使用
作用:用于对前端穿进来的参数进行校验,省去了大量的逻辑判断操作
@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 类型@asrttrue
:验证 boolean 对象是否为 true@asrtfal
:验证 boolean 对象是否为 fal@past
:验证 date 和 calendar 对象是否在当前时间之前@future
:验证 date 和 calendar 对象是否在当前时间之后@pattern
:验证 string 对象是否符合正则表达式的规则@vaild
递归验证,用于对象、数组和集合,会对对象的元素、数组的元素进行一一校验@email
用于验证一个字符串是否是一个合法的右键地址,空字符串或null算验证通过@url(protocol=,host=,port=,regexp=,flags=)
用于校验一个字符串是否是合法url建议使用在stirng,integer类型,不建议使用在int类型上,因为表单值为”” 时无法转换为int,但可以转换为stirng为””,integer为null
@m考试反思怎么写in
:验证 number 和 string 对象是否大等于指定的值@max
:验证 number 和 string 对象是否小等于指定的值@decimalmax
:被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过bigdecimal定义的最大值的字符串表北京理工大学珠海学院示.小数存在精度@decimalmin
:被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过bigdecimal定义的最小值的字符串表示.小数存在精度@digits
:验证 number 和 string 的构成是否合法@digits(integer=,fraction=)
:验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。一开始传入的参数没有使用@validated 修饰,结果绑定不起作用,参数校验不成功,加上此注解即可生效。
所以bingdingresult是要与@validated同时使用的。
项目中具体使用如下:
controller中:
@apioperation("添加角色")@requestmapping(value = "/create", method = requestmethod.post)@responbodypublic commonresult create(@validated @requestbody umsrole role, bindingresult bindingresult ) { int count = rolervice.create(role); if (count > 0) { return commonresult.success(count); } return commonresult.failed();}
domain中:
import io.swagger.annotations.apimodelproperty;import javax.validation.constraints.notempty;import java.io.rializable;import java.util.date;@datapublic class umsrole implements rializable { private long id; @apimodelproperty(value = "名称") @notempty(message = "name不能为空!") private string name; @apimodelproperty(value = "描述") @notempty(message = "描述不能为空!") private string description; @apimodelproperty(value = "后台用户数量") private integer admincount; @apimodelproperty(value = "创建时间") private date createtime; @apimodelproperty(value = "启用状态:0->禁用;1->启用") private integer status; private integer sort; private static final long rialversionuid = 1l;
调用接口返回效果:
参数:
{
“name”:“test”
}
返回值:
{
“code”: 404,
“message”: “描述不能为空!”,
“data”: null
}
注意!
1.@validated 与bindingresult 需要相邻,否则 变量result 不能接受错误信息
控制台输出
field error in object ‘entity’ on field ‘变量’: rejected value [null]; codes [notnull.entity.变量,notnull.变量,notnull.java.lang.string,notnull]; arguments [org.springframework.context.support.defaultmessagesourceresolvable: codes
2.如果使用了@validated,那么beanvalidate也会抛出异常而不是之前的封装在bindingresult中
总结:
使用bindingresult,省去了代码块中的大部分校验
controller代码
@requestmapping("") public string index(@valid ur ur , bindingresult bindingresult){ if (bindingresult.ha电影紧急迫降rrors()){ list<objecterror> allerrors = bindingresult宁乡城北中学.getallerrors(); objecterror objecterror = allerrors.get(0); system.out.println(objecterror.getdefaultmessage()); system.out.println(objecterror.getobjectname()); system.out.println(allerrors); } return "index"; }
请求先来到dispatcherrvlet的dodispatch 方法,最终会调用modelattributemethodprocessor#resolveargument方法
调用databinder#validate方法后调用constrainttree#validatesingleconstraint,由它来调用具体的验证器
具体的验4级作文万能模板证器
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 00:09:07,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/2ceb52e05db834b976a56e8330720914.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:关于BindingResult的使用总结及注意事项.doc
本文 PDF 下载地址:关于BindingResult的使用总结及注意事项.pdf
留言与评论(共有 0 条评论) |