zoukankan      html  css  js  c++  java
  • 为List<T>中的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;
    
        // 省略
    
    }
  • 相关阅读:
    第二章 万变不离其踪--收割自己的深度图
    2.1 光照系统
    2.2 深度渲染机制
    2.3 来点实际--日照分析实现
    2.4 通视分析
    2.5 Cesium视域分析的实现
    2.6
    第三章 讲真,没几个搞得清楚的经纬度——GIS坐标
    3.1 地理坐标系统
    3.2 渲染坐标系统
  • 原文地址:https://www.cnblogs.com/deolin/p/7416398.html
Copyright © 2011-2022 走看看