У меня возникла проблема с использованием @Valid
для параметра для метода обработчика на моем @Controller
. Мой код выглядит следующим образом:
@RequestMapping(value=BIBBLE_BOBBLE_URI_PATTERN + "/widgets", method=RequestMethod.POST)
@ResponseBody
@ResponseStatus(HttpStatus.CREATED)
public Widget saveNewWidget(
@PathVariable final String username,
@PathVariable final String bibbleBobbleName,
@Valid @RequestBody final Widget widget,
final BindingResult results,
final HttpServletRequest request,
final HttpServletResponse response)
где Widget
- класс для одного из моих объектов домена. Я использую аннотацию @RequestBody
, чтобы указать, что полезная нагрузка запроса соответствует Widget
(в моих тестах запросы JSON, хотя Джексон находится в моем пути к классам, поэтому я также могу использовать XML).
Как вы можете видеть, параметр BindingResult
следует непосредственно после параметра Widget
, но я получаю следующую ошибку:
java.lang.IllegalStateException: Errors/BindingResult argument declared without preceding model attribute. Check your handler method signature!
Как применить аннотацию @Valid
к параметру @RequestBody
, а затем получить результаты?
P.S. Я использую annotation-driven
для обработки проводки контроллеров, ведения контента и т.д.