Как явно получить данные post в Spring MVC?


есть ли способ получить сами данные post? Я знаю, что spring обрабатывает привязку данных post к объектам java. Но, учитывая два поля, которые я хочу обработать, как я могу получить эти данные?

например, предположим, что моя форма имеет два поля:

 <input type="text" name="value1" id="value1"/>
 <input type="text" name="value2" id="value2"/>

Как я могу получить эти значения в моем контроллере?

3 56

3 ответа:

Если вы используете один из встроенных экземпляров контроллера, то одним из параметров вашего метода контроллера будет объект запроса. Вы можете позвонить request.getParameter("value1") чтобы получить значение данных POST (или PUT).

Если вы используете аннотации Spring MVC, вы можете добавить аннотированный параметр к параметрам вашего метода:

@RequestMapping(value = "/someUrl")
public String someMethod(@RequestParam("value1") String valueOne) {
 //do stuff with valueOne variable here
}

еще один ответ на точный вопрос OP-установить consumes тип содержимого "text/plain" а затем объявить @RequestBody String входной параметр. Это передаст текст данных POST в качестве объявленного String переменной (postPayload в следующем примере).

конечно, это предполагает, что ваша полезная нагрузка POST-это текстовые данные (как указано в OP).

пример:

    @RequestMapping(value = "/your/url/here", method = RequestMethod.POST, consumes = "text/plain")
    public ModelAndView someMethod(@RequestBody String postPayload) {    
        // ...    
    }

Spring MVC работает поверх API сервлета. Таким образом, вы можете использовать HttpServletRequest#getParameter() для этого:

String value1 = request.getParameter("value1");
String value2 = request.getParameter("value2");

The HttpServletRequest уже должны быть доступны для вас внутри Spring MVC в качестве одного из аргументов метода handleRequest() метод.