springmvc:GET复杂对象列表



我从映射字符串集合开始:

/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]);
  }
}

相关内容

  • 没有找到相关文章

最新更新