Spring MVC 3 исключение: ожидается аргумент Errors / BindingResult - PullRequest
5 голосов
/ 05 февраля 2012

Я получаю исключение для следующего метода:

@Transactional
@RequestMapping(method=RequestMethod.PUT)
public @ResponseBody Account create(@Valid @RequestBody CreateAccountRequest request, BindingResult bindingResult)
{ ... 
}

Выдает следующее исключение:

java.lang.IllegalStateException: ожидается аргумент Errors / BindingResultнаходиться сразу после аргумента атрибута модели в сигнатуре метода контроллера: public com.mangofactory.concorde.domain.Account com.mangofactory.concorde.api.AccountService.create (com.mangofactory.concorde.api.rpc.CreateAccountRequest, org.springframework.validation.BindingResult)

Согласно документации , мне необходимо добавить BindingResult в качестве второго параметра.Тем не менее, я сделал это.

Это даже присутствует в исключении.

Что я пропустил?

Ответы [ 3 ]

4 голосов
/ 22 марта 2012

Оказывается, что для решения этой проблемы нужно было полностью удалить свойство BindingResult.

Сработала подпись:

public @ResponseBody CreateAccountResponse create(@Valid @RequestBody CreateAccountRequest request)

Это было указано в пункте № 3 этого блога.

3 голосов
/ 14 февраля 2012

BindingResult поддерживается только после аргументов @ModelAttribute. Сочетание @Valid и @RequestBody вызывает исключение MethodArgumentNotValidException, которое по умолчанию преобразуется в код ошибки 400. Это задокументировано в справочной документации и в самом @RequestMapping.

0 голосов
/ 05 февраля 2012

Я не думаю, что вам нужно @RequestBody там, поскольку ваш класс CreateAccountRequest должен уже указывать, какие параметры связаны с какими типами / переменными (таким образом, исключая необходимость использовать HttpMessageConverters, предоставляемый Spring).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...