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; // 省略 }
