第一节:SpringBoot 之表单验证@Valid
是spring-data-jpa的功能;
下面是添加学生的信息例子,要求姓名不能为空,年龄大于18岁。
贴下代码吧:
Student实体:
package com.cy.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.NotEmpty;import javax.validation.constraints.NotNull;@Entity@Table(name="t_student")public class Student { @Id @GeneratedValue private Integer id; @NotEmpty(message="姓名不能为空!") @Column(length=50) private String name; @NotNull(message="年龄不能为空!") @Min(value=18,message="年龄必须大于18岁") 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; }}
StudentDao.java:
package com.cy.dao;import org.springframework.data.jpa.repository.JpaRepository;import com.cy.entity.Student;public interface StudentDao extends JpaRepository{}
StudentService.java:
package com.cy.service;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.cy.dao.StudentDao;import com.cy.entity.Student;@Servicepublic class StudentService { @Resource private StudentDao studentDao; public void add(Student student) { studentDao.save(student); }}
StudentController.java:
package com.cy.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.cy.entity.Student;import com.cy.service.StudentService;@RestController@RequestMapping("/student")public class StudentController { @Resource private StudentService studentService; /** * 添加学生 * @param student * @return */ @RequestMapping("/add") public String add(@Valid Student student, BindingResult bindingResult){ if(bindingResult.hasErrors()){ return bindingResult.getFieldError().getDefaultMessage(); }else{ studentService.add(student); return "添加成功"; } }}
src/main/webapp/studentAdd.html:
学生信息添加页面 姓名: 年龄:
浏览器http://localhost/studentAdd.html,输入值不对,会提示:
补充验证的其他注解,这里只用了两个注解,下面列下清单,平时可以参考用;
限制 说明@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格式