Аспект, который перехватывает вызовы метода, который использует аннотацию @RequestMapping и для каждого параметра, на котором есть аннотация @Valid, вызывает соответствующий валидатор в аспекте.
я проблема с использованием@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
параметр, а затем получить результаты?
Постскриптум я используюannotation-driven
управлять подключением контроллеров, согласованием контента и т. д.