表单校验


只需要通过简单的注解,就能完成表单字段的校验,并将校验结果返回给前端,无需手动一个个校验。

注释 说明
@Valid 被注释的元素是一个对象,需要检查此对象的所有字段值
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min) 被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式
@Email 被注释的元素必须是电子邮箱地址
@Length(min=, max=) 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range(min=, max=) 被注释的元素必须在合适的范围内
@URL(protocol=,host=, port=, regexp=, flags=) 被注释的字符串必须是一个有效的url

使用方法

第一步,先将需要校验的字段加上对应的注解,例如:

 * @author liuzhibin
 * Date: 2019/10/27
 */
@Data
@ApiModel
public class RoleUpdateDto {
    @NotBlank(message = "角色名称不能为空")
    @Length(max = 100, message = "角色名称不能超过100位")
    @ApiModelProperty(value = "角色名称",required = true)
    private String roleName;

    @ApiModelProperty(value = "备注")
    @Length(max = 255, message = "备注不能超过255位")
    private String remark;


}

第二步,在Controller层加上需要校验的注解@Valid,紧跟校验对象后面,需要加上参数BindingResult bindingResult

@ApiOperation(value = "新增角色")
    @PostMapping("/role")
    public RestData save(@RequestBody @Valid RoleUpdateDto roleUpdateDto, BindingResult bindingResult) {
        //判断校验结果是否有错误
        if (bindingResult.hasErrors()) {
            //通过调用BaseController的formErrorValid方法,会拼装好校验信息返回给前端
            return this.formErrorValid(bindingResult);
        }
        //do something...
    }

假设角色名称为空,即会返回给前端:

{
    "code":-1,
    "data":null,
    "desc":"角色名称不能为空"
}