2016-08-02 85 views
1

的名單我開始繪製字符串的集合:Spring MVC的: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 
+0

您能簡單介紹一下您的問題? –

+0

我需要擴展現有的API並通過pojos列表 – piotrek

+0

嗨:)它對你有用。我搜索了你.http://www.studytrails.com/frameworks/spring/spring-mvc-controller-input。 jsp –

回答

0

如果你傳遞一個參數具有相同的名稱將抵達你的控制器如之前被轉換成一個數組:

網址...在你的控制器/somethig?type=x&type=y&type=z

你必須定義請求parametere作爲數組

@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ž

所以你的情況您可以使用此解決方案。

網址... /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]); 
    } 
} 
+0

裏面的pojos列表是的,我只是希望我可以避免手動檢查,如果兩個列表具有相同的大小和建築容器 – piotrek

+0

可以ü添加您的表格,以便我可以爲您提供其他解決方案 –

+0

我沒有表格。這是一個休息的終點 – piotrek