Como uso @Valid com os parâmetros @RequestBody do Spring MVC?
Estou tendo um problema ao usar@Valid
em um parâmetro para um método manipulador no meu@Controller
. Meu código fica assim:
@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)
OndeWidget
é a classe de um dos meus objetos de domínio. Estou usando o@RequestBody
anotação para indicar que a carga útil da solicitação é mapeada parawidget
(nos meus testes, as solicitações são JSON, embora Jackson esteja no meu caminho de classe para que eu também possa usar XML).
Como você pode ver, oBindingResult
parâmetro @ segue diretamente após oWidget
parâmetro, mas recebo o seguinte erro:
java.lang.IllegalStateException: Errors/BindingResult argument declared without preceding model attribute. Check your handler method signature!
Como aplico o@Valid
anotação em um@RequestBody
parâmetro e, em seguida, obter os resultados?
P.S. Estou a usarannotation-driven
para conectar os controladores, negociar conteúdo, etc.