¿Cómo uso @Valid con los parámetros @RequestBody de Spring MVC?
Tengo un problema con el uso de@Valid
en un parámetro para un método de controlador en mi@Controller
. Mi código se ve así:
@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)
dóndeWidget
es la clase para uno de mis objetos de dominio. Estoy usando la@RequestBody
anotación para indicar que la carga útil de la solicitud se asigna awidget
(en mis pruebas, las solicitudes son JSON, aunque Jackson está en mi classpath, por lo que también podría usar XML).
omo puedes ver, laBindingResult
l parámetro @ sigue directamente después delWidget
parámetro, pero obtengo el siguiente error:
java.lang.IllegalStateException: Errors/BindingResult argument declared without preceding model attribute. Check your handler method signature!
¿Cómo aplico la@Valid
anotación a una@RequestBody
parámetro y luego obtener los resultados?
PD. Estoy usandoannotation-driven
para manejar el cableado de los controladores, negociar contenido, etc.