目录
SpringBoot实现数据校验的方法
- SpringBoot使用了Hibernate-validate校验框架
- spring-boot-strarter-web启动器中已经包含了Hibernate-validate的jar包
校验方法
- 在实体类上加上校验规则
-
public class Users { // @NotBlank非空校验 // message属性可以指定当出现错误时,被封装进model中的value的值 @NotBlank(message = "用户名不能为空") private String name; @NotBlank(message = "密码不能为空") private String password; private Integer age; @Override public String toString() { return "Users{" + "name='" + name + '\'' + ", password='" + password + '\'' + ", age=" + age + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
-
- 在controller类中开启校验
-
/** * @Valid 开启对Users的数据校验 * @param u 需要保存的实体类 * bindingResult 将校验结果封装进Model中,key为被校验的对象的名称(用驼峰命名法)(本次就是users), * @ModelAttribute 如果想对返回错误结果的model中的key值进行重命名,可以使用该注解,并指定别名为"user" * @return */ @RequestMapping("/save") public String saveUser(@ModelAttribute("user") @Valid Users u, BindingResult bindingResult){ System.out.println(u); // 当bindingResult.hasErrors()==true则数据有错,校验失败 if (bindingResult.hasErrors()){ return "addUser"; } return "ok"; }
-
- 在页面中获取错误信息
-
<form action="/save" method="post"> 用户名:<input type="text" name="name"> <!--刚进入页面时,应为不存在user对象,所以需要判断users是否存在,否则将抛出异常--> <!--此处的属性名user应该和前台传过来的一致,不然将不显示--> <font color="red" th:if="${user}!=null" th:errors="${user.name}"></font><br> 密码:<input type="password" name="password"> <font color="red" th:if="${user}!=null" th:errors="${user.password}"></font><br> 年龄:<input type="text" name="age"><br> <input type="submit" value="保存"> </form>
-
常用的校验方法
- @NotBlank:判断字符串是否为null或是空串,会自动去掉首尾空格
- @NotEmpty:判断字符串是否为null或是空串,不会自动去掉首尾空格
- @NotNull:判断属性值是否为null
- @Length(max=x,min=y):判断字符的长度(最大为x,最小为y)
-
@Length(max = 8,min = 6,message = "密码太短") private String password;
- @Min:用于对数值的判断,指定最小值
- @Max:用于对数值的判断,指定最大值
- @Email:判断邮箱是否合法