只需要通过简单的注解,就能完成表单字段的校验,并将校验结果返回给前端,无需手动一个个校验。
注释 | 说明 |
---|---|
@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) | 被注释的元素必须符合指定的正则表达式 |
被注释的元素必须是电子邮箱地址 | |
@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":"角色名称不能为空"
}