2012-09-21 157 views
1

我有這個控制器映射春季3 - @PathVariable的組合和HttpServletRequest的

@RequestMapping("/{language}/payment/{id}/reward/{rewardId}/name/{name}/address/{address}") 
public String paymentPackage(@PathVariable Long id, @PathVariable Long 
rewardId, @PathVariable String name, @PathVariable String address, 
ModelMap model, HttpServletRequest request) 

它運作良好,但現在我需要通過「HttpServletRequest的請求」等方法,但請求不包含從REST變量URL(ID,姓名,...) 是否有可能在這HttpServletRequest中的變量嗎? 謝謝。

+0

您可以提供其他方法(/控制器)的簽名嗎? – xyz

+0

另一種方法是不在控制器,它是利用請求對象的服務。我認爲這種方法的簽名與這個問題無關。你爲什麼不存儲那些'@ PathVariable'變量在一個簡單的bean,然後用'request'到下游方法一起傳遞這個bean是簡單的doXXX(HttpServletRequest的請求) – DominikM

+0

? IDE重構功能在這裏是你的朋友。 – nickdos

回答

0

創建過濾器並修改請求以包含所有需要的變量。或者修改控制器內的請求。

request.setAttribute("name", name); 
0

設置從頁面模型和訪問的價值。如果您需要從其他方法訪問,請將其作爲參數傳遞給方法。

model.addAttribute("request", request); 
+0

我請求對象,但其參數是空的,因爲我使用@PathVariable和REST URL。我想要的是讓他們在路徑變量和請求。 – DominikM

+1

你不能有像that.Path變量應該被綁定到一個URI模板變量。並且不能通過請求訪問。如果你想通過請求訪問它作爲參數。這可以通過請求訪問 – Prathap