我开始绘制字符串集合:
/abc?type=x,y,z
我把它映射到一组枚举
@RequestParam(value = "type") Set<MyEnum> types
现在我想为每种类型添加另一个参数。例如:
/abc?type=x:withProperty1,y:withProperty2,z:withProperty3
理想情况下将其映射到某些容器列表
@RequestParam(value = "type") Set<MyContainer> containers
然后:
class MyContainer {
MyEnum type
String property
}
Spring MVC有可能吗?或者我所能做的只是将它绑定到两个不同的列表:
/abc?type=x,y,z&properties=withProperty1,withProperty2,withProperty3
答案 0 :(得分:0)
如果传递具有相同名称的参数,它将在转到控制器之前转换为数组:
url ... /somethig?type=x&type=y&type=z
在控制器中,您必须将请求参数定义为数组
@requestMapping(value="/something",method=RequestMethod.GET)
public void getTypes(@RequestParam(value = "type") String[] types){
for(String type : types){
System.out.print(type + "\t");
}
}
因此你将拥有
x y z
所以在你的情况下你可以使用这个解决方案。
url ... /somethig?type=x&type=y&type=z&property=1&property=2&property=3
:
@requestMapping(value="/something",method=RequestMethod.GET)
public void getTypes(@RequestParam(value = "type") String[] types,@RequestParam(value = "property") String[] properties){
for(int i=0;i<types.length();i++){
MyContainer mc=new MyContainer();
mc.setType(types[i]);
mc.setProperty(properties[i]);
}
}