Spring MVC Як прийняти значення параметра запиту GET HTTP у моєму методі контролера?


87

У цей період я вивчаю приклад вітрини Spring MVC (можна завантажити з табло STS), і у мене є кілька простих питань щодо Request Mappingприкладів:

1) У мене на home.jspсторінці є це посилання:

        <li>
            <a id="byParameter" class="textLink" href="<c:url value="/mapping/parameter?foo=bar" />">By path, method, and presence of parameter</a>
        </li>

Як ви можете бачити за цим посиланням, я роблю запит HTTP GET із параметром "foo", що містить значення: "bar".

Цей HTTP-запит обробляється наступним методом класу контролера MappingController:

@RequestMapping(value="/mapping/parameter", method=RequestMethod.GET, params="foo")
public @ResponseBody String byParameter() {
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

Цей метод керує HTTP-запитом (лише GETтипу), що має параметр "foo"

Як я можу взяти значення ("бар") цього параметра і помістити його у змінну всередині коду мого методом Parameter?

Відповіді:


184

Як пояснюється в документації , за допомогою @RequestParamанотації:

public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
           + foo;
}

3
Щиро дякую за чітку відповідь та посилання на документацію
— AndreaNobili

3
У разі , коли є 10 число параметрів, ми повинні зробити це 10 разів або є кращий спосіб для Тар сценарію
— графа

2
@Count: клацніть посилання, яке я дав на документацію, потім прокрутіть трохи вгору до абзацу "Підтримувані типи аргументів методу" та прочитайте частину про "Об'єкти команд або форм"
— JB Nizet

43

Ви також можете використовувати шаблон URI. Якщо ви структурували свій запит на спокійну URL-адресу, Spring може проаналізувати надане значення з URL-адреси.

HTML

<li>
    <a id="byParameter" 
       class="textLink" href="<c:url value="/mapping/parameter/bar />">By path, method,and
           presence of parameter</a>
</li>

Контролер

@RequestMapping(value="/mapping/parameter/{foo}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String foo) {
    //Perform logic with foo
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

Весняна документація до шаблону URI

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.