【Java】使用@Valid+BindingResult进行controller参数校验
JAVA 进行 参数 校验 Controller valid 使用
2023-09-11 14:19:38 时间
1.0 @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指定小数精度。
2.0 BindingResult
Spring验证的错误返回
@Valid 和 BindingResult 是一一对应的,如果有多个@Valid,那么每个@Valid后面跟着的BindingResult就是这个@Valid的验证结果,顺序不能乱
1.首先在参数实体类上面加上相关的验证信息
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); }
转 : https://www.cnblogs.com/jxd283465/p/12015661.html
相关文章
- Java 使用UDP、TCP进行网络通信
- java 实现万年历
- 利用Java中的现有方法实现对集合元素进行排序
- Java当中List集合根据对象某个属性进行去重
- Java Invoked OOM-Killer - OOM不一定是来自于java heap
- 冲刺金九银十!这份 Java 性能调优实战宝典,学明白轻松涨薪 20k
- java移位运算符对右侧参数进行模运算
- Java 对 PDF 文件进行电子签章
- 《Java程序员面试秘笈》—— 1.11 线程的分组
- 借助Eclipse进行Java单元测试的步骤和说明
- java整理软件--- Java OCR 图像智能字符识别技术,可识别中文,但是验证码不可以识别...已测识别中文效果很好
- java基础的第二轮快速学习!day09
- java线程安全问题之静态变量、实例变量、局部变量
- 浅析AES加密工作模式 EBC/CBC 模式了解及具体如何进行补位、AES加密报错java.security.InvalidAlgorithmParameterException: ECB mode cannot use IV处理
- 浅析Java对集合进行操作时报java.util.ConcurrentModificationException并发修改异常问题:产生原因、单线程/多线程环境解决、CopyOnWriteArrayList线程安全的ArrayList、fail-fast快速失败机制防止多线程修改集合造成并发问题
- java list map 根据map的某个key值进行排序
- Java输入输出处理技术2
- java代码如何发送QQ邮件
- Java ConcurrentModificationException异常原因和解决方法
- Java 编程的动态性, 第4部分: 用 Javassist 进行类转换--转载
- Java系统开发中进行全局异常管理,对参数异常、请求异常、媒体异常、数据库异常、文件异常、JSON异常、运行时异常等等进行分类处理,可以对异常进行监控并记录,减少代码冗余和重复工作量,让用户界面更友好
- Java获取上传的文件大小并且转换对文件大小进行单位转化