场景:
本地swagger测试新开接口报错No primary or default constructor found for interface java.util.List
分析:
@PostMapping("/httpTest")
@ApiOperation(value = "httpTest")
public ReturnDTO httpTest(List<String> list) {
kingService.http(list);
return ReturnDTO.ok();
}
因为没有使用@RequestParam或@RequesrBody注解时,Spring MVC会尝试直接将请求参数绑定到方法参数上。由于List是一个接口,没有默认构造函数,Spring MVC无法实例化它,因此会抛出No primary or default constructor found for interfa
解决方法1:
加上@RequestParam或@RequesrBody,当然对应传参方式也会改变,
解决方法2(错误示范,不可用):
把List改为ArrayList,这样也不会报错,但是接收的数据一直会为空的,因为Spring MVC默认情况下不会自动将URL参数解析为集合类型。需要显式地使用@RequestParam注解来告诉Spring MVC如何解析这些参数。