Spring Boot筆記八:表單驗證
阿新 • • 發佈:2019-02-08
ast override con body def 返回 table 正則 system
所謂的表單驗證,就是為了防止用戶亂輸入的,這個問題前端的HTML5就可以判斷了,其實不需要後端來驗證,這裏還是講一下後端驗證
首先,我們的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";
}
這裏需要介紹的有兩點
第一個是@RequestMapping 和 @GetMapping @PostMapping 區別
@GetMapping是一個組合註解,是@RequestMapping(method = RequestMethod.GET)的縮寫。
@PostMapping是一個組合註解,是@RequestMapping(method = RequestMethod.POST)的縮寫。
所以我這裏使用什麽都可以
第二個就是我們的方法,裏面參數寫了@Valid,這個就是用於驗證註解是否符合要求,直接加在變量之前,在變量中添加驗證信息的要求,當不符合要求時就會在方法中返回message的錯誤提示信息
現在,做好了一切準備,我們來測試一下,這裏使用PostMan進行測試,如圖
Idea輸出展示
Spring Boot筆記八:表單驗證