有沒有一種方法可以表達我的Spring Web MVC控制器方法應該通過作爲URI路徑的一部分傳遞一個ID的請求來匹配......Spring Web MVC:對請求參數和路徑變量使用相同的請求映射
@RequestMapping(method=RequestMethod.GET, value="campaigns/{id}")
public String getCampaignDetails(Model model, @PathVariable("id") Long id) {
...或者,如果客戶端的ID作爲風格HTTP請求參數發送...
@RequestMapping(method=RequestMethod.GET, value="campaigns")
public String getCampaignDetails(Model model, @RequestParam("id") Long id) {
這在我看來很常見的真實世界的URL方案,我不想添加重複的代碼,但我還沒有找到答案。任何建議非常歡迎。
編輯:事實證明,似乎目前(與Spring MVC的< = 3.0)沒有辦法做到這一點,看到哈維的回答中討論。
不幸的是,這是行不通的,因爲路徑變量無法解析。我還嘗試了一種方法,通過添加方法參數(@PathVariable(「id」)Long id2),但是不能將路徑變量設置爲可選項,因此此建議的解決方案不起作用。 更多推薦? – ngeek 2010-05-01 09:55:56
@ngeek我沒有意識到@PathVariable不能設置爲null,謝謝。我也忘了寫@PathVariable,所以我編輯了我的答案來添加它,我認爲你不能避免有2種方法,我認爲:(。 – Javi 2010-05-01 14:09:51
謝謝你回到你的提議Javi。當然我已經委託給我仍然認爲Spring MVC註釋應該提供一種方法來根據內在的意思將多個URL定義映射到相同的方法,就像Rails或Grails中已經允許的路由器一樣。 感謝您的幫助無論如何, – ngeek 2010-05-02 14:37:26