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.