Spring MVC传递List类型参数报错:No primary or default constructor found for interface java.util.List]使用两种注解解决

2023-10-27

  • 在测试GenericConverter传递List数组的时候,出现No primary or default constructor found for interface java.util.List] with r这个错误
  • 解决
  1. 因为报错是500所以肯定是后端的问题,看一下报错记录
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Apr 21 18:27:57 CST 2020
There was an unexpected error (type=Internal Server Error, status=500).
No primary or default constructor found for interface java.util.List
  1. 再看控制台报错
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No primary or default constructor found for interface java.util.List] with root cause
  1. 简便一下
Request processing failed
  1. 请求处理失败,具体的失败是后面:No primary or default constructor found for interface java.util.List] with root cause
    因为是在自定义数组转换器的时候失败的,所以我还是去自定义转换器那里加了一个断点,发现不是在参数转换过程中失败。

  2. 所以应该是处理器处理参数之前的步骤出错了。确定处理器之前的步骤就是HandlerMapping进行请求与@RequestMapping的匹配了。
    那么就可能不是一个单例,而是可能是一个普遍性问题,我们去掉自定义转化器,写一个简单的控制器

    @GetMapping("/no/list")
    @ResponseBody
    public List<String> lists(  List<String> strs){
        return strs;
    }

结果:

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Apr 21 18:42:29 CST 2020
There was an unexpected error (type=Internal Server Error, status=500).
No primary or default constructor found for interface java.util.List

哈哈哈,说明这是一个一般性的问题。

  1. 那就咱进一步,因为获取控制器参数是在进入控制器方法之前(因为需要转换成控制器所需要的参数),所以肯定是在获取控制器参数之前。
    那就是处理器映射过程中的问题了。
    处理器映射需要把请求路径与@RequestMapping匹配,现在看来这个过程还需要对参数进行映射。

  2. 但是我突然想到无注解之下SPring MVC获取参数的唯一要求是参数名称与Http请求参数名称保持一致,一般的List参数简单的用逗号隔开就可以了,不会有所谓的名称,那就可能是这样导致的。
    那我加上名称试一试

http://localhost:8243/role/no/list?strs=1,2,3

还是报错

  1. 原谅我这个时候又想到一点,逗号隔开是数组的默认传递方式,不是list啊
    也就是名称匹配但是,但是目标对象不匹配。
    那就试试改成数组
    @GetMapping("/no/array")
    @ResponseBody
    public String[] lists(  String[] strs){
        return strs;
    }

结果是可以的
9. 所以我暂时给他定一个结论,就是不匹配
那就用@RequestParam让他强制匹配

    @GetMapping("/no/list")
    @ResponseBody
    public List<String> lists(  @RequestParam List<String> strs){
        return strs;
    }

可以了!!!!!!
10. 嘿嘿,那么我的问题就解决了,不过List还是使用JSON传递的比较多
所以在试一试@RequestBody,但是我不会写这种前端的,再等前端抽一个例子给我

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring MVC传递List类型参数报错:No primary or default constructor found for interface java.util.List]使用两种注解解决 的相关文章

随机推荐

  • 【regression】分位数回归 quantile regression

    quantile regression python实现 前言 分位数回归可调用的库 1 scikit learn 2 statsmodels quantile loss function python实现 1 在neural networ
  • 区块链在医疗行业能做些什么?

    千金难买一个健康的身体 健康是每个人成长和实现幸福生活的基础 也是促进人的全面发展的必然条件 当今时代 社会压力巨大 很多人处于亚健康的状态 这是一个亟需重视的问题 众所周知 很多疾病早发现就能实现早治疗 实现及时治疗 才能最大程度上挽回生
  • 腾讯云2核4G服务器5M带宽轻量CPU性能、流量和系统盘测试

    腾讯云轻量应用服务器2核4G5M配置 自带5M公网带宽 5M带宽下载速度峰值可达640KB 秒 系统盘为60GB SSD盘 每月500GB流量包 折合每天16GB流量 腾讯云百科来详细说下腾讯云轻量应用服务器2核4G5M配置 CPU型号处理
  • 「速通Shell」建楼先搬砖,Shell变量四大分类

    目录 Shell变量 什么是变量 shell变量定义 shell变量分类 环境变量 常见变量 变量引用 变量赋值 本地变量 变量定义 变量引用 变量赋值 变量删除 位置参数变量 变量定义 变量引用 特殊变量 变量定义 变量引用 总结 上一篇
  • POJ--1328:Radar Installation (贪心)

    1 题目源地址 http poj org problem id 1328 2 解题思路 该题题意是为了求出能够覆盖所有岛屿的最小雷达数目 每个小岛对应x轴上的一个区间 在这个区间内的任何一个点放置雷达 则可以覆盖该小岛 区间范围的计算用 x
  • MySQL数据库命令行详解

    MySQL数据库命令行详解 基础操作 进入数据库 mysql u root p databaseName root是只用管理员账户 后面括号是自己想连接的数据库名称 可不写 进入mysql后在通过use databaseName来连接对应数
  • 小样本学习--学习记录

    之前在做课题的时候 把数据不均衡和小样本的概念混淆了 昨天看了一篇论文 面向小样本数据的机器学习方法研究综述 陈良臣 傅德印 这篇论文写的非常清晰 推荐阅读 网上的一些综述整理都是根据 小样本学习研究综述 赵凯琳 这篇论文 知乎上的一篇笔记
  • 哪些应用适合服务器虚拟化,哪些服务器和应用适合虚拟化?

    虚拟化如今很流行 你可能也想把你所有的物理机进行虚拟化 考虑到可移植性 部署和硬件利用等方面的好处 虚拟化的确是非常诱人的 不过 这并不意味着虚拟化是任何服务器或应用的最好解决方案 至少现在还不是 其挑战是如何判断到底哪些服务器和应用适合于
  • 优秀英语教材

    优秀英语教材的选择 本人是个学生 依照自己学习英语的经历发表一些浅见 请各位不要将以下内容做商业用途 误区 1 在我看来 简单地评判一本英语教材是否优秀 可以观察以下几点 1 有无CEFR欧洲标准评级 2 是否是近10年出版 3 是否是英美
  • 【磕盐随记】C++ CUDA编程的环境配置

    一 前言 最近写了个又臭又长的代码来验证idea 效果还行但速度太慢 原因是代码中包含了一个很耗时的模块 这个模块需要连续执行百次以上才能得到最终结果 经过实测模块每次执行消耗约20ms 而且两次执行之间没有先后关系 为了保证系统的实时性
  • VUE3 + TS + 父子组件传值

    VUE3 TS 父子组件传值 父组件 传入几个变量 并且有接受子组件函数 changeaddress
  • 【主席树启发式合并】【P3302】[SDOI2013]森林

    Description 给定一个 n 个节点的森林 有 Q 次操作 每次要么将森林中某两点联通 保证操作后还是个森林 要么查询两点间权值第 k 小 保证两点联通 强制在线 Limitation 1 leq n Q leq 80000 Sol
  • SpringBoot核心配置全面总结

    Spring Boot的核心配置文件用于配置Spring Boot程序 文件名字必须以application开始 这个既是底层源码的强制要求 也是SpringBoot的一种代码规约 有助于在开发层面利于代码规范管理 说明 以下内容接着i前面
  • Java中的Calendar日历API用法完全解析

    第一部分 Calendar介绍 Calendar 定义 public abstract class Calendar implements Serializable Cloneable Comparable
  • centos mysql jar 驱动包_JDBC连接Mysql数据库详解

    JDBC Java DataBase Connectivity 即Java数据库连接 简而言之 就是通过Java语言来操作数据库 我们可以把JDBC理解成是官方定义的一套操作所有关系型数据库的规则 规则即接口 也就是说 官方定义了一套操作所
  • java实现单点登陆(SSO)

    java实现单点登陆 SSO 网络域名必须完全一致 才代表同一站点 域名映射 访问后面的 会跳转到前面 单点登陆概念 多系统 单一位置登录 实现多系统同时登陆 常出现在互联网和企业级平台中 单点登陆一般是用于互相授信的系统 实现单一位置登录
  • Unity Shader简介

    Shader 中文名为着色器 对很多开发者来说它是一个神秘的存在 想学但是又不知道如何去学 或者学了一段时间发现Get不到它的点 始终感觉游离在外 无法开窍 本文来讲下如何从零基础入门Shader 目的在于让初学Shader的程序或者美术可
  • C++ MyHttpServer网络服务器实验

    C MyHttpServer网络服务器实验 一 实验要求 二 文件夹管理 三 实验结果 四 程序代码 C 课程老师把这一个实验分成了五个小实验 VS版本是2019的 涉及Http协议的请求处理 响应处理 多线程等 有一两个实验老师的示例代码
  • 原理图改动后更新PCB报错的解决方法

    今天我在用Altium Designer 20绘制PCB时遇到了一个情况 在更改了原理图以后再进行Update PCB Document的时候软件会提示错误 截图如下 遇到这种情况时大家往往束手无策而选择重新建立一个空白的PCB板再去生成一
  • Spring MVC传递List类型参数报错:No primary or default constructor found for interface java.util.List]使用两种注解解决

    在测试GenericConverter传递List数组的时候 出现No primary or default constructor found for interface java util List with r这个错误 解决 因为报错