SpringMVC 介绍之 Validation

SpringMVC 介绍之 Validation

   对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证。SpringMVC自身对数据在服务端的校验有一个比较好的支持,它能将我们提交到服务端的数据按照我们事先的约定进行数据有效性验证,对于不合格的数据信息SpringMVC会把它保存在错误对象中,这些错误信息我们也可以通过SpringMVC提供的标签在前端JSP页面上进行展示。

使用 Validator 接口进行验证

   在SpringMVC中提供了一个Validator接口,我们可以通过该接口来定义我们自己对实体对象的验证。接下来看一个示例。

   假设我们现在有一个需要进行验证的实体类User,其代码如下所示:

@Data
public class DemoModel extends BaseModel {
/**
* 用户 userId
/
@NotBlank(message = “userId 不能为空”)
private String userId;
/
*
* 用户名称
*/
@NotBlank(message = “userName 不能为空”)
private String userName;

}

SpringMVC 控制层使用

@RequestMapping("/validParameter")
public Map<String, Object> validParameter(@Valid DemoModel demoVo, BindingResult result) {
    if (result.hasErrors()) {
       return setResultError(result.getFieldError().getDefaultMessage());
    }
    return setResultTrue(null, "DemoModel实体类,检查数据成功");
}

JSR-303 原生支持的限制有如下几种:
限制
说明
@Null 限制只能为 null
@NotNull 限制必须不为 null
@AssertFalse 限制必须为 false
@AssertTrue 限制必须为 true
@DecimalMax(value) 限制必须为一个不大于指定值的数字
@DecimalMin(value) 限制必须为一个不小于指定值的数字
@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过 integer,小数部分的位数不能超过 fraction
@Future 限制必须是一个将来的日期
@Max(value) 限制必须为一个不大于指定值的数字
@Min(value) 限制必须为一个不小于指定值的数字
@Past 限制必须是一个过去的日期
@Pattern(value) 限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须在 min 到 max 之间