码迷,mamicode.com
首页 > 其他好文 > 详细

为List<T>中的T进行参数校验

时间:2017-08-23 10:21:14      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:puts   input   对象   nbsp   通过   需要   int   gre   pos   

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;

    // 省略

}

为List<T>中的T进行参数校验

标签:puts   input   对象   nbsp   通过   需要   int   gre   pos   

原文地址:http://www.cnblogs.com/deolin/p/7416398.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!