Spring MVC - Почему не удается использовать @RequestBody и @RequestParam вместе
Использование HTTP-клиента с почтовым запросом и приложением Content-Type / x-www-form-urlencoded
1) Только @RequestBody
Запрос - localhost: 8080 / SpringMVC / welcome In Body - name = abc
Код-
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestBody String body, Model model) {
model.addAttribute("message", body);
return "hello";
}
// дает тело как 'Имя = а» как и ожидалось
2) Только @RequestParam
Запрос - localhost: 8080 / SpringMVC / welcome In Body - name = abc
Код-
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestParam String name, Model model) {
model.addAttribute("name", name);
return "hello";
}
// дает имя как 'а» как и ожидалось
3) оба вместе
Запрос - localhost: 8080 / SpringMVC / welcome In Body - name = abc
Код-
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestBody String body, @RequestParam String name, Model model) {
model.addAttribute("name", name);
model.addAttribute("message", body);
return "hello";
}
// HTTP Error Code 400 - запрос, отправленный клиентом, был синтаксически неверным.
4) Выше с измененным положением параметров
Запрос - localhost: 8080 / SpringMVC / welcome In Body - name = abc
Код-
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestParam String name, @RequestBody String body, Model model) {
model.addAttribute("name", name);
model.addAttribute("message", body);
return "hello";
}
// Нет ошибок. Имя 'а», тело пусто
5) Вместе, но получить параметры типа URL
Запрос - localhost: 8080 / SpringMVC / welcome? Name = xyz В теле - name = abc
Код-
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestBody String body, @RequestParam String name, Model model) {
model.addAttribute("name", name);
model.addAttribute("message", body);
return "hello";
}
// имя 'хуг» и тело естьИмя = а»
6) То же, что и 5), но с изменением положения параметров
Код -
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestParam String name, @RequestBody String body, Model model) {
model.addAttribute("name", name);
model.addAttribute("message", body);
return "hello";
}
// name = 'хуг, а» тело пусто
Может кто-нибудь объяснить это поведение?