共计 1941 个字符,预计需要花费 5 分钟才能阅读完成。
Spring Bean 参数校验 Validator
以下 2 种形式能够用于所有的 Spring bean 不仅仅是 Controller 控制器。
一、原始类型参数
在控制器(或者其余 Bean)上应用 @Validated 注解。
控制器类
@RestController
@RequestMapping("account")
@Validated
public class AccountController {// ......}
在参数前增加校验注解
参数校验
@GetMapping("account")
public Result<AccountVO> getAccount(@NotNull Long accountId) {// ......}
二、表单对象参数
参数 AddressForm,增加 @Valid 注解。
表单校验
@PostMapping("/address/save")
public Object saveAddress(@Valid AddressForm addressForm) {// ......}
AddressForm 中增加注解:
表单校验
@Data
public class AddressForm {
private Integer id;
@NotBlank
private String name;
@NotBlank(message = "{mobile.not.blank}")
@Pattern(regexp = "^1[34578]\\d{9}$")
private String mobile;
/**
* list 汇合须要增加 @Valid 注解
*/
@Valid
private List<Xxx> list;
// ......
}
留神:示例中 {name.not.blank} 为国际化配置。国际化须要在配置文件下自定义 org/hibernate/validator/ValidationMessages.properties 配置文件。
三、Bean Validation 中罕用注解
@Null 被正文的元素必须为 null
@NotNull 被正文的元素必须不为 null
@NotBlank
@NotBlank(message =) 验证字符串非 null,且长度必须大于 0
@NotEmpty 被正文的字符串、汇合的必须非空
@AssertTrue 被正文的元素必须为 true
@AssertFalse 被正文的元素必须为 false
@Min(value) 被正文的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被正文的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被正文的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被正文的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=) 被正文的元素的大小必须在指定的范畴内
@Digits (integer, fraction) 被正文的元素必须是一个数字,其值必须在可承受的范畴内
@Past 被正文的元素必须是一个过来的日期
@Future 被正文的元素必须是一个未来的日期
@Pattern(regex=,flag=) 被正文的元素必须合乎指定的正则表达式
四、Hibernate Validator 罕用注解
@Email 被正文的元素必须是电子邮箱地址
@Length(min=,max=) 被正文的字符串的大小必须在指定的范畴内
@Range(min=,max=,message=) 被正文的元素必须在适合的范畴内
五、Validator 分组
分组名 形容
QueryGroup 查问应用的分组
CreateGroup 创立应用的分组
UpdateGroup 更新应用的分组
DeleteGroup 删除应用的分组
5.1 模型中增加 Validator 分组
模型示例
public class SysConfig implements Serializable {
/**
* 主键 ID
*/
@TableId(value = "id", type = IdType.AUTO)
@Null(groups = CreateGroup.class)
@NotNull(groups = UpdateGroup.class)
private Long id;
// 省略
}
5.2 控制器办法中指定应用的校验分组
控制器示例
@ApiOperation("批改参数配置")
@PostMapping
public void edit(@Validated(UpdateGroup.class) @RequestBody SysConfig entity) {// 省略}
参考链接:
https://blog.csdn.net/qq_3100…
https://www.cnblogs.com/Never…
https://segmentfault.com/q/10…
正文完