搜到的文章大多数是在@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