我从映射字符串集合开始:
/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
如果您传递具有相同名称的参数,它将在到达控制器之前转换为数组,例如:
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]);
}
}