2012-09-21 3 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, name, ...) HttpServletRequest에서도이 변수를 사용할 수 있습니까? 감사합니다.

+0

다른 방법 (/ 컨트롤러)의 서명을 제공 할 수 있습니까? – xyz

+0

다른 메서드는 컨트롤러에 없으며 요청 개체를 사용하는 서비스입니다. 나는이 방법의 서명이 질문에 적절하다고 생각한다. doXXX (HttpServletRequest request) – DominikM

+0

단순한 bean에 그'@PathVariable' 변수를 저장하고'request'와 함께 빈을 전달하는 이유는 무엇입니까? IDE 리팩토링 기능은 당신의 친구입니다. – nickdos

답변

0

필요한 모든 변수를 포함하도록 필터를 만들고 요청을 수정하십시오. 또는 컨트롤러 내부의 요청을 수정하십시오.

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

페이지에서 모델 및 액세스의 값을 설정하십시오. 다른 메소드에서 액세스해야하는 경우 매개 변수로 메소드에 전달하십시오.

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

요청 개체가 있지만 @PathVariable 및 나머지 URL을 사용하므로 매개 변수가 null입니다. 내가 원하는 것은 경로 변수와 요청 모두에서 그것들을 갖는 것이다. – DominikM

+1

that.Path 변수는 URI 템플릿 변수에 바인딩되어야합니다. 요청에 의해 액세스 할 수 없습니다. 경우에 따라 요청에 의해 액세스하려는 매개 변수로 전달하십시오. 요청을 통해 액세스 할 수 있습니다. – Prathap