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;
    
        // 省略
    
    }
  • 相关阅读:
    如何安装vue-cli脚手架环境
    使用vw,vh对页面进行布局
    ParseChat聊天室应用项目源码
    不错的找茬游戏源码项目
    山寨山寨版手机安全卫士项目
    高仿精仿金山手机卫士源码项目完整版
    java斗地主游戏项目源码
    ios版塔防类游戏源码
    ios媒体视频播放器应用项目
    仿iphone动态萤火虫锁屏应用源码
  • 原文地址:https://www.cnblogs.com/deolin/p/7416398.html
Copyright © 2011-2022 走看看