首先,我們的Person類,我們加上一些表單驗證的註釋,如下:
package com.vae.springboot.study.bean;
import org.springframework.stereotype.Component;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Component
public class Person {
@NotBlank(message = "名字必須輸入")
private String name;
@Min(value = 32,message = "年齡必須大於32歲")
private Integer age;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
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;
}
}
這就是一個簡單的Java Bean類,我們寫了幾個表單驗證的註解,關於註解,我大概列一下
說明 | 限制 |
---|---|
@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格式 |
然後我們去Controller裏面去寫個方法:
@PostMapping("/test")
public String test(@Valid Person person, BindingResult bindingResult){
if (bindingResult.hasErrors()) {
System.out.println(bindingResult.getFieldError().getDefaultMessage());
return null;
}
person.setName(person.getName());
person.setAge(person.getAge());
return "Vae";
}
有個前提:裏面參數寫了@Valid,這個就是用於驗證註解是否符合要求,直接加在變量之前,在變量中添加驗證信息的要求,當不符合要求時就會在方法中返回message的錯誤提示信息
現在,做好了一切準備,我們來測試一下,這裏使用PostMan進行測試,如圖
Idea輸出展示