mica 中已经做了参数校验异常的统一处理。下面2种方式可以用于所有的 Spring bean 不仅仅是 Controller 控制器。

原始类型参数

直接在控制器(或者其他Bean)上使用@Validated注解。

  1. @RestController
    @RequestMapping("account")
    @Validated
    public class AccountController {
    // ……
    }

在参数前添加校验注解

  1. @GetMapping("account")
    public Result<AccountVO> getAccount(
    @NotNull Long accountId
    ) {
    // ……
    }

表单对象参数

参数 AddressForm,添加 @Valid

  1. @PostMapping("/address/save")
    public Object saveAddress(@Valid AddressForm addressForm) {
    ……
    }

AddressForm中添加注解

  1. public class AddressForm {
    private Integer id;
    @NotBlank
    private String name;
    @NotBlank(message = "{mobile.not.blank}")
    @Pattern(regexp = "^1[34578]\\d{9}$")
    private String mobile;

    ......
    }

注意: 示例中 {name.not.blank} 为国际化配置。国际化需要在配置文件下自定义 org/hibernate/validator/ValidationMessages.properties

Bean Validation 中常用注解

  1. @Null 被注释的元素必须为 null
    @NotNull 被注释的元素必须不为 null
    @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 常用注解

  1. @Email 被注释的元素必须是电子邮箱地址
    @Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
    @Range(min=,max=,message=) 被注释的元素必须在合适的范围内

微信公众号

如梦技术

精彩内容每日推荐!!!