Spring MVC Как принять значение параметра HTTP-запроса GET в моем методе контроллера?


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"

Как я могу взять значение («полосу») этого параметра и поместить его в переменную внутри кода моего метода по параметрам?

Ответы:


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: щелкните ссылку, которую я дал на документацию, затем прокрутите немного вверх до абзаца «Поддерживаемые типы аргументов метода» и прочтите часть о «Объекты команд или форм»
Дж. Б. Низет

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)";
}

Документация по шаблону Spring URI

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.