一、常用的表单验证注解
限制 | 说明 |
---|---|
@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,也可以通过正则表达式和flag指定自定义的email格式 |
下面通过一个例子来介绍如何使用,就拿 @Min 这个来试。
二、代码示例
我们的需求是,向数据库中插入一条用户记录(name,age,gender),但是age不得小于18,所以可以用到 @Min 这个注解
1、User.java
- package com.liuyanzhao.blog.domain;
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.Id;
- import javax.validation.constraints.Min;
- @Entity
- public class User {
- @Id
- @GeneratedValue
- private Integer id;
- private String name;
- private String gender;
- @Min(value = 18,message = "未成年!!!")
- 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 String getGender() {
- return gender;
- }
- public void setGender(String gender) {
- this.gender = gender;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- }
注意第20行的注解
2、UserController.java
- package com.liuyanzhao.blog.controller;
- import com.liuyanzhao.blog.domain.User;
- import com.liuyanzhao.blog.repository.UserRepository;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.validation.BindingResult;
- import org.springframework.web.bind.annotation.*;
- import javax.validation.Valid;
- /**
- * @Author 言曌
- * @DATE 2017/10/29 上午10:33
- * @URL http://liuyanzhao.com
- */
- @RestController
- public class UserController {
- @Autowired
- private UserRepository userRepository;
- /**
- * 添加一个用户,年龄不得小于18
- * @return
- */
- @PostMapping(value = "/users")
- public User insertUser(@Valid User user, BindingResult bindingResult) {
- if(bindingResult.hasErrors()) {
- System.out.println(bindingResult.getFieldError().getDefaultMessage());
- return null;
- }
- user.setName(user.getName());
- user.setGender(user.getGender());
- user.setAge(user.getAge());
- return userRepository.save(user);
- }
- }
注意第29行的注解@Valid和注入的bindingResult对象
3、UserRepository.java
- package com.liuyanzhao.blog.repository;
- import com.liuyanzhao.blog.domain.User;
- import org.springframework.data.jpa.repository.JpaRepository;
- /**
- * @Author 言曌
- * @DATE 2017/10/29 上午10:35
- * @URL http://liuyanzhao.com
- */
- public interface UserRepository extends JpaRepository<User,Integer>{//表名和Id类型
- }
然后我们可以使用Postman或者restlet client根据发起POST请求,添加数据。
如果 age的值小于18,记录将无法添加,控制台会出现 “未成年!!!”。
其他注解使用类似。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏