2012-05-10 26 views
0

我想弄清楚如何通過URL將相同類的兩個不同參數傳遞給控制器​​中的處理程序方法。例如,給定一個帶有「id」參數的「Foo」類(我只是說一個參數來保持簡單,但從帶有它們的負載的角度來看),控制器的代碼如下所示:Spring 3 MVC請求參數映射。調用控制器中的處理程序的同一類中的兩個參數

@Controller(value = "customerCareRemoteService") 
public class CustomerCareRemoteServiceImpl { 

// Othe methods/requests 

    @RequestMapping(value = "/" + "prueba" , method = RequestMethod.GET) 
    public @ResponseBody String prueba(Foo pFoo1, Foo pFoo2) { 
     //stupid and not interesting code 
     String answer = "pFoo1.id is " + pFoo1.id + ". pFoo2.id is " + pFoo2.id."; 
     System.out.println(answer); 
     return answer; 

    } 

} 

所以,當我把這種方法,沒有辦法在兩個參數之間的不同:

http://myfakeurl/prueba?id=1&id=2 

我應該如何處理呢?有什麼方法可以「參數」前綴嗎?我見過@RequestParam,但它對我不起作用,因爲它不能用於我自己的和美麗的個人課程(或者我錯了嗎?)。我也想避免包裝類。感謝您的時間。

回答

0

所以,從一個同事一些幫助,我已經來到,討論關於天馬下一頁:

Customizing Parameter Names When Binding Spring MVC Command Objects

這導致了未來的StackOverflow問題:

How to customize parameter names when binding spring mvc command objects

所以它看起來像沒有簡單的解決方案,如「使用註釋X」,但創建自己的解析器,並使用自定義註釋(作爲一個很好的新手,我仍然試圖理解nd:-S)。

1

您應該使用@PathVariable來解決此問題。

你的映射網址會是這樣的。

@RequestMapping(value = "/" + "prueba" + "/{id1}/{id2}" , method = RequestMethod.GET) 

和你的函數中的爭論會。

public @ResponseBody String prueba(@PathVariable int pFoo1, @PathVariable int pFoo2) 

通過這種方式,您可以在控制器中使用這兩個ID進行進一步操作。

希望這對你有所幫助。

乾杯。

+0

嗨,感謝您的回答,但重點是我希望URL參數填充對象屬性。我的意思是,我曾經說過,Foo對象有一個屬性,但它只是保持簡單的例子。其實我試圖填補各種屬性。但是,謝謝:-) – raspayu

+0

在這種情況下,您應該使用@RequestAttribute將您的視圖中的所有屬性綁定到模型對象。 –

+0

嗯......我認爲它適用於原始類型,但不適用於來自類的屬性(我的意思是,不適用於Foo.id)。 – raspayu

相關問題