為List 中的T進行參數校驗


1、現在前端發送了一個POST請求,他的Data是一個數組,而不是對象(jsonObj的值兩側是中括號)。

var jsonObj = [{'id':11, 'name':'叵'}, {'id':12, 'name':'卜'}];
$.ajax({
    type : "post",
    // 省略
    data : JSON.stringify(jsonObj),
    // 省略
});

 

2、后端的請求方法應該讓一個Input的數組對象,或是Input泛型的List對象入參,來進行數據綁定

@RequestMapping
@ResponseBody
public Integer diningId(@RequestBody PersonInput[] inputs) {
    // 省略
    return 0;
}

 

@RequestMapping
@ResponseBody
public Integer diningId(@RequestBody List<PersonInput> inputs) {
    // 省略
    return 0;
}

 

就參數綁定而言,兩者都是可行的,參數成功綁定了。

 

3、現在需要做參數校驗,比如id不能為空白,

很容易想到在PersonInput.id域的上方追加@NotBlank主鍵,

在請求方法中追加一個BindingResult對象作為入參。

@RequestMapping
@ResponseBody
public Integer diningId(@RequestBody List<PersonInput> inputs, BindingResult checker) {
    // 省略
    return 0;
}

 

class PersonInput {

    @NotBlank
    private String id;

    private String name;

    // 省略

}

 

4、這樣做的話,參數綁定依然能夠成功,但是參數校驗會失敗,checker會是null

 

5、需要追加定義一個新的Pojo,只持有List<PersonInput>對象,並在通過@Valid遞歸校驗。

 

class PersonInputList {

    @Valid
    private List<PersonInput> inputs;

    // 省略

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM