Spring MVC 中接收集合Integer 问题

题目描述

Spring MVC 中接收集合Integer 问题

题目来源

对应批量查询的需求时,调用接口时使用逗号分隔,在 spring mvc 中使用实体对象属性 List<Integer> 接收,框架会自动将数据进行分隔保存。
如果数据是非数值会报错,但是如果数据是一个空白符和在分隔符中无数据时却会把空白符当做 null 保存进去,这不符合与预期效果,如何可以针对这种情况做处理?

相关代码

@PostMapping("test")
@ResponseBody
public User test(User user) {
    return user;
}


public class User {
    private List<Integer> idList;

    public List<Integer> getIdList() {
        return idList;
    }

    public void setIdList(List<Integer> idList) {
        this.idList = idList;
    }
}

你期待的结果是什么?实际看到的错误信息又是什么?

实际期待结果是对空白符和空数据进行忽略处理,如果无法忽略,提示数据不对也行。

正常结果1

输入正确的数据
clipboard.png

正常结果2

输入非数值的数据

clipboard.png

错误结果1

数据中存在空格

clipboard.png

clipboard.png

错误结果2

数据中存在空格与分隔符中无内容
clipboard.png

阅读 3.1k
1 个回答
@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(List.class,new PropertyEditorSupport() {
        @Override
        public void setAsText(String text) {
            this.setValue(text);
        }
    });
}

使用SpringMVC的数据绑定,请求参数到达时进行初始化数据绑定
根据你自身的需求在setAsText方法中进行定制化操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题