问题描述
代码如下:
@RequestMapping("/list")
public Object getList(@RequestBody List<String> ids)
{
ids.add("A");
return ids;
}
这里只做了一个简单的事情,在Controller中定义一个方法getList(),接收List<String>
类型的参数,并返回。运行后请求该接口控制提示错误:
Failed to instantiate [java.util.List]: Specified class is an interface
错误分析
不可以接收一个接口类型字段的请求参数。
解决方法
创建一个Vo类,包装需要传递的参数ids:
public class ExampleVo
{
private List<String> ids;
public List<String> getIds()
{
return ids;
}
public void setIds(List<String> ids)
{
this.ids = ids;
}
}
更改controller该接口对应方法接收的参数新创建Vo包装类:
@RequestMapping("/list")
public Object getList(@RequestBody ExampleVo vo)
{
List<String> ids = vo.getIds();
ids.add("A");
return ids;
}
请求接口验证修改后的效果,完美解决List传参问题: