read mvc example spring jackson spring-4

mvc - Spring 4: rechaza @EquestBody "nulo" para todos los puntos finales



spring mvc jackson example (1)

La anotación @RequestBody tiene un atributo required que es true de manera predeterminada, por lo que la solicitud con un cuerpo vacío no debería funcionar aquí y el servidor debería responder con un error HTTP 400.

En este caso, una carga útil "null" significa efectivamente que el cuerpo de la solicitud no es nulo y que Jackson lo deserializará como un valor null . En este caso, no creo que se @Validated validación @Validated , lo que le deja con su arreglo actual.

Como se señaló en su problema, esto se resolvió con SPR-13176 en Spring Framework 4.2+.

Jackson deserializa la cadena "nula" como un cuerpo de solicitud nula que se espera (aunque sería bueno poder desactivar este comportamiento).

El código siguiente activa la validación en el caso de la carga útil "{}", pero no en el caso de la carga útil "nula". Esto me obliga a hacer otro control de carga nula que no me parece normal ya que el PayloadValidator podría incluir el cheque nulo.

@InitBinder protected void initBinder(WebDataBinder binder) { binder.setValidator(new PayloadValidator()); } @RequestMapping(method = POST, value = "/my/path/here") public ResponseEntity<String> create( @Validated @RequestBody Payload payload ) { if (payload == null) { // Payload validation logic not in one place } // useful work here }

  1. ¿Existe una forma genérica de rechazar por completo null @RequestBody (es decir, para todos los puntos finales)?
  2. Si no, ¿puedo tener toda la lógica de validación en un solo lugar y ser activada automáticamente (es decir, a través de @Validated o @Valid)?

Gracias, Emanuel