@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指定小数精度。
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
时间: 2024-11-09 09:57:57