swagger设置传参为list

搜到的文章大多数是在@ApiImplicitParam里添加属性allowMultiple = true,发现没用,后来看到后台有报错java.lang.NoSuchMethodException: java.util.List.(),搜了下,是没有加@RequestParam注解。加完后,在knife4j界面直接用逗号拼接即可。
之前

(List<String> userIds)

之后

(@RequestParam(value = "userIds") List<String> userIds)

好奇的看了看为什么会出现这种情况,浅显的debug了下springmvc的参数绑定过程,结论是:
使用@RequestParam:
使用AbstractNamedValueMethodArgumentResolver这种方法解析方法参数,会把string转换为list
不使用@RequestParam:
使用ModelMethodProcessor解析,最终会报错:No primary or default constructor found for interface java.util.List
大致是这些,没有探究深层次原因,这两个Resolver是HandlerMethodArgumentResolver的两个实现类
参考文章:
https://blog.csdn.net/nibonnn/article/details/104010232
springmvc参数绑定源码解析文章可参考:
https://www.cnblogs.com/w-y-c-m/p/8443892.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值