Состояние HTTP 400. Запрос, отправленный клиентом, был синтаксически неправильным.

это мой контроллер

@RequestMapping("/offercreated")

 public String offerCreated(@Valid Offer offer, Model model, BindingResult  result) {

 if (result.hasErrors()) {

 return "createoffer";

 } else {

 System.out.println("form validated");

 return "offercreated";

 }

и моя фасоль

@Size(min = 5, max = 45)
    private String name;

Форма проверяется, когда я даю имя от 5 до 45 символов. Но когда форма не проверена, я получаю отчет об ошибке 400 статуса. Я не знаю, почему я получаю ошибку. Пожалуйста, нужна помощь здесь


person Yogi    schedule 21.12.2015    source источник
comment
Как ваш запрос? У вас есть -- @Valid Offer offer-- в вызове метода, это означает, что Spring сначала проверит предложение.   -  person reos    schedule 21.12.2015
comment
BindingResult должен идти сразу после аргумента, к которому он относится. Поменяйте местами аргументы Model и BindingResult, и ваш Offer должен быть снабжен аннотацией @ModelAttribute.   -  person M. Deinum    schedule 21.12.2015


Ответы (2)


Параметр BindingResult должен следовать сразу за проверяемым параметром. Это описано здесь: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html

Результаты проверки org.springframework.validation.Errors / org.springframework.validation.BindingResult для предыдущей команды или объекта формы (непосредственно предшествующий аргумент метода).

person Ardavel    schedule 22.12.2015

Вау, когда я изменяю параметры контроллера на модель, а затем предлагаю ее работу !!

@RequestMapping("/offercreated")

public String offerCreated(модель модели, предложение @Valid Offer, результат BindingResult) {

если (результат.hasErrors()) {

вернуть «создать предложение»;

} еще {

System.out.println("форма проверена");

вернуть "предложение создано";

}

может кто-нибудь объяснить, почему так? я так растерялся !

person Yogi    schedule 22.12.2015