SpringMVC數據校驗(三)

GitHub地址:

springMVC:

https://github.com/asd821300801/springMVC.git

Maven管理的springMVC:

https://github.com/asd821300801/MVC.git


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="帳號不允許爲空!")

1



2、方法參數中進行校驗:

//標記驗證級聯的屬性、方法參數或方法返回類型。
//當屬性、方法參數或方法返回類型被驗證時,對對象及其屬性定義的約束進行驗證。

@Valid  //需要校驗的參數前面加上@Valid註解即可


綁定結果:BindingResult

2



獲取單條錯誤

@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?

3

訪問時加上參數:http://localhost:8080/springmvc/user/add?name=lingdu&id=1

4

發佈了106 篇原創文章 · 獲贊 98 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章