在开发RESTFull API 和普通的表单提交都需要对用户提交的数据进行校验,例如:用户姓名不能为空,年龄必须大于0 等等。这里我们主要说的是后台的校验,在 SpringBoot 中我们可以通过使用 Hibernate Validator 来进行后台的数据校验的。
闲话少说!接下来就开始介绍如何使用 Hibernate Validator 来进行数据的校验。
我们在添加用户的功能基础上来进行改造。
用户Model类代码如下:
public class User { private String name; private Integer age; //省略get and set 方法 }复制代码
用户Controller代码如下:
@RequestMapping(value = "",method = RequestMethod.POST) public void add(User user){ log.info("添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge()); }复制代码
第一步我们先在 User 类上添加校验的注解,具体代码如下:
public class User { @NotEmpty(message="请输入您的名称!") private String name; @Max(value = 100, message = "年龄必须在20-100之间!") @Min(value= 20 ,message= "年龄必须在20-100之间!" ) private Integer age; ..省略get 和set 方法 }复制代码
我们来大致说明一下 注解的含义:
第二步就是对用户添加方法进行改造
用户添加方法中的 User 参数需要声明 @Valid 注解,添加该注解主要是指定要校验的参数实例,然后在添加用户方法中添加 BindingResult 参数。BindingResult:主要是存储校验结果的数据,我们可以通过 BindingResult 来判断校验是否通过和获取校验错误提示信息。
具体代码如下:
@PostMapping() public User add(@Valid User user,BindingResult bindingResult){ if(bindingResult.hasErrors()) { String defaultMessage = bindingResult.getFieldError().getDefaultMessage(); System.out.println(defaultMessage); return null; } log.info("springboot添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge()); return user; }复制代码
这里测试使用的是谷歌的一个插件工具:Advanced REST client 来完成的,你也可以选择你顺手的工具进行测试。
测试用户名称为空的情况: 后台日志输出如下: 测试年龄不在20到100 的数据 : 后台日志输出如下:
Hibernate Validator是 实现 JSR349 的校验框架,他默认提供已经定义好的校验注解,我们经常使用的大致如下: