GitHub地址:
springMVC:
Maven管理的springMVC:
SpringMVC—-數據校驗
- 1、導入相關jar包,springmvc配置
<mvc:annotation-driven>
- 2、相關POJO加上約束的註解,配置到get方法或者屬性中
- 3、Controller 中加上 @Valid 並緊跟 BindingResult
JSR 303是JAVA EE 6中的一項子規範(2009年11月確定),叫做Bean Validation官方參考實現是Hibernate Validator
Maven下載地址
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>
</dependency>
Bean Validation 中內置的 constraint
@Null //被註釋的元素必須爲 null
@NotNull //被註釋的元素必須不爲 null
@AssertTrue //被註釋的元素必須爲 true
@AssertFalse //被註釋的元素必須爲 false
@Min(value) //被註釋的元素必須是一個數字,其值必須大於等於指定的最小值
@Max(value) //被註釋的元素必須是一個數字,其值必須小於等於指定的最大值
@DecimalMin(value) //被註釋的元素必須是一個數字,其值必須大於等於指定的最小值
@DecimalMax(value) //被註釋的元素必須是一個數字,其值必須小於等於指定的最大值
@Size(max=, min=) //被註釋的元素的大小必須在指定的範圍內
@Digits (integer, fraction) //被註釋的元素必須是一個數字,其值必須在可接受的範圍內
@Past //被註釋的元素必須是一個過去的日期
@Future //被註釋的元素必須是一個將來的日期
@Pattern(regex=,flag=) //被註釋的元素必須符合指定的正則表達式
Hibernate Validator 附加的 constraint
@NotBlank(message =) //驗證字符串非null,且長度必須大於0
@Email //被註釋的元素必須是電子郵箱地址
@Length(min=,max=) //被註釋的字符串的大小必須在指定的範圍內
@NotEmpty //被註釋的字符串的必須非空
@Range(min=,max=,message=) //被註釋的元素必須在合適的範圍內
1、實體類標記註解:
@NotNull(message="帳號不允許爲空!")
2、方法參數中進行校驗:
//標記驗證級聯的屬性、方法參數或方法返回類型。
//當屬性、方法參數或方法返回類型被驗證時,對對象及其屬性定義的約束進行驗證。
@Valid //需要校驗的參數前面加上@Valid註解即可
綁定結果:BindingResult
獲取單條錯誤
@RequestMapping("/add")
public String addUser(@Valid User user,BindingResult rs,ModelMap map){
if(rs.hasErrors()){
//rs.getFieldErrors();//獲取所有錯誤
map.addAttribute("msg", rs.getFieldError().getDefaultMessage());//獲取第一條錯誤信息
}else{
// 調用service
System.out.println(user.getId());
}
map.addAttribute("user", user);
return "user/view";
}
獲取所有的錯誤
@RequestMapping("/add")
public String addUser(@Valid User user,BindingResult rs,ModelMap map,HttpServletRequest request){
//判斷是否有錯誤
if(rs.hasErrors()){
map.addAttribute("msg",rs.getAllErrors());//獲取所有的錯誤保存在msg
}else{
// 在沒有錯誤的情況下才調用service
System.out.println(user.getId());
}
return "user/view";
}
打印所有的錯誤:
後臺:
map.addAttribute("msg",rs.getAllErrors());
前臺(jstl遍歷):
<c:forEach var="item" items="${msg}">
錯誤信息:<c:out value="${item.defaultMessage}" /> <br />
</c:forEach>
訪問時加上參數:http://localhost:8080/springmvc/user/add?name=lingdu&id=1