Spring boot 注解参数校验

为了使controller层与service曾业务做到不强相关,避免service存在大量重复的代码,可以在controller曾通过注解的形式对请求参数进行校验。并结合BindingResult进行判断。

public class UserForm implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 手机号
     */
    @NotBlank(message = "{required}")
    @Pattern(regexp = RegexpConstant.MOBILE_REG, message = "{mobile}")
    private String telephone;

    /**
     * 密码
     */
    private String password;

   //省略getter和setter
}

public ResponseResult test(@Valid UserForm UserForm, BindingResult bindingResult) throws Exception {

        //在这里,我们判断参数是否通过校验
        if (bindingResult.hasErrors()) {
            Map 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);
    }
 

字段注解(所属包:javax.validation.constraints.*)。

字段注解说明

@AssertFalse 限制必须为false

@AssertTrue 限制必须为true

@DecimalMax(value) 限制必须为一个不大于指定值的数字

@DecimalMin(value) 限制必须为一个不小于指定值的数字

@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction

@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

@Future 限制必须是一个将来的日期

@Max(value) 限制必须为一个不大于指定值的数字

@Min(value) 限制必须为一个不小于指定值的数字

@Past 限制必须是一个过去的日期

@Pattern(value) 限制必须符合指定的正则表达式

@NotEmpty 验证注解的元素值不为null或者空(isEmpty()方法)可用于字符串, Collection, Map, 数组。

@NotBlank 验证注解的元素值不为null且包含除了空格之外至少一个字符。只用于字符串。

@Null 限制只能为null

@NotNull 限制必须不为null

@Past 验证注解的元素值(日期类型)比当前时间早

@Size(max,min) 限制字符长度必须在min到max之间
 

你可能感兴趣的:(springboot,spring,boot,java,spring)