Spring Boot (5) 表单验证

来源:互联网 发布:高干子弟知乎 编辑:程序博客网 时间:2024/06/07 06:17
package com.java1234.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import javax.validation.constraints.Min;import javax.validation.constraints.NotNull;/*** * 学生实体类 * @author wrwang * */@Entity@Table(name="student")public class Student {@Id@GeneratedValueprivate Integer id;@NotNull(message="姓名不能为空")@Column(length=50)private String  name;@NotNull(message="年龄不能为空")@Min(value=18,message="年龄不能少于18")@Column(length=50)private Integer age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}

这里只用了两个注解,下面列下清单,平时可以参考用;

限制说明@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之间@Past验证注解的元素值(日期类型)比当前时间早@NotEmpty验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)@NotBlank验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格@Email验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

使用hibernate validator出现上面的错误, 需要 注意

@NotNull 和 @NotEmpty  和@NotBlank 区别

@NotEmpty 用在集合类上面
@NotBlank 用在String上面

@NotNull    用在基本类型上

package com.java1234.controller;import javax.annotation.Resource;import javax.validation.Valid;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.java1234.entity.Student;import com.java1234.service.AccountService;/** * 学生控制器 * @author wrwang * */@RestController@RequestMapping("/aonncunt")public class accountcontroller {@Resourceprivate AccountService accountservice;@RequestMapping("/sav")public String addstudent(@Valid Student student,BindingResult bindingresult) {if(bindingresult.hasErrors()) {return bindingresult.getFieldError().getDefaultMessage();}else {accountservice.addstudent(student);return "添加成功!";}}}

对BindingResult的深入解析:如果在使用接口返回信息的时候,可以直接拿到bindingResult中的错误信息




原创粉丝点击