首页 > 作文

关于BindingResult的使用总结及注意事项

更新时间:2023-04-04 00:09:09 阅读: 评论:0

目录
bindingresult总结及注意事项相关的校验api空检查长度检查booelan检查日期检查其他验证数值检查项目使用中遇到的问题bindingresult作用原理

bindingresult总结及注意事项

记一个简单又好用的api:bindingresult

bindingresult使用起来很简单,一般在controller中使用

作用:用于对前端穿进来的参数进行校验,省去了大量的逻辑判断操作

相关的校验api

空检查

@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检查

@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,省去了代码块中的大部分校验

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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图