В запросе Spring 3.0 GET, в чем разница между @PathVariable и @RequestParam - PullRequest
14 голосов
/ 02 ноября 2010

В следующем примере, в чем разница между @PathVariable и @RequestParam?

@RequestMapping(value = "/portfolio/{portfolioIdPath}", method = RequestMethod.GET)
public final String portfolio(HttpServletRequest request, ModelMap model, 
@PathVariable long portfolioIdPath, @RequestParam long portfolioIdRequest)

Ответы [ 3 ]

17 голосов
/ 02 ноября 2010

@ RequestParam привязывает параметр запроса к параметру в вашем методе. В вашем примере значение параметра с именем «portfolioIdRequest» в GET-запросе будет передано в качестве аргумента «portfolioIdRequest» в ваш метод. Более конкретный пример - если URL-адрес запроса

http://hostname/portfolio/123?portfolioIdRequest=456

тогда значение параметра "portfolioIdRequest" будет "456".

Подробнее здесь : http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-requestparam

@ PathVariable аналогичным образом связывает значение переменной шаблона URI «portfolioIdPath» с параметром метода «portfolioIdPath». Например, если ваш URI равен

/portfolio/123

тогда значение параметра метода «portfolioIdPath» будет «123».

Подробнее здесь : http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-uri-templates

2 голосов
/ 02 ноября 2010

@ RequestParam идентифицирует параметр HTTP GET или POST, который отправляется клиентом (пользователем), а @RequestMapping выделяет сегмент URL, который варьируется от запроса к запросу:

http://host/?var=1

В приведенном выше URL-адресе "var" является параметром запроса.

http://host/registration/{which}

и выше URL-адреса {which} - это сопоставление запроса. Вы можете позвонить в вашу службу как:

http://host/registration/user

ИЛИ как

http://host/registration/firm

В вашем приложении вы можете получить доступ к значению {which} (В первом случае which = "user", а во втором which = "firm".

0 голосов
/ 29 ноября 2012

Зависит от того, как вы хотите обработать ваш запрос

@RequestParam example
(request)http://something.com/owner?ownerId=1234

@PathVariable example
(request) http://something.com/owner/1234
(in tour code) /owner/{ownerId}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...