Как явно получить данные post в Spring MVC?
Есть ли способ получить данные сообщения? Я знаю, что spring обрабатывает связывание данных post с java-объектами. Но, учитывая два поля, которые я хочу обработать, как я могу получить эти данные?
Например, предположим, что моя форма имела два поля:
<input type="text" name="value1" id="value1"/>
<input type="text" name="value2" id="value2"/>
Как я могу получить эти значения в моем контроллере?
Ответы
Ответ 1
Если вы используете один из встроенных экземпляров контроллера, то одним из параметров вашего метода контроллера будет объект Request. Вы можете вызвать request.getParameter("value1")
, чтобы получить значение данных Post.
Если вы используете аннотации Spring MVC, вы можете добавить аннотированный параметр к вашим параметрам метода:
@RequestMapping(value = "/someUrl")
public String someMethod(@RequestParam("value1") String valueOne) {
//do stuff with valueOne variable here
}
Ответ 2
Spring MVC запускается поверх API сервлета. Итак, вы можете использовать HttpServletRequest#getParameter()
для этого:
String value1 = request.getParameter("value1");
String value2 = request.getParameter("value2");
HttpServletRequest
уже должен быть доступен вам внутри Spring MVC как один из аргументов метода метода handleRequest()
.
Ответ 3
Другой ответ на точный вопрос 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) {
// ...
}