Null-request-body nicht immer gefangen von Spring @RequestBody @Gültig Anmerkungen

Ich bin derzeit in ein Problem mit der @RequestBody annotation im Frühjahr. Ich habe derzeit alle meine Validierung Anmerkungen auf meine Modelle richtig, und Sie arbeiten groß, wenn ein Objekt Gebucht wird. Alles wie erwartet funktioniert, auch wenn der request-body geschrieben ist vollständig leer, oder ein leeres Objekt "{}". Das problem entsteht, wenn jemand versucht, ein post-request-body von "null". Irgendwie bekommt durch die @Valid annotation und wird nicht abgefangen, was zu einem NullPointerException wenn ich versuche, auf das Objekt zuzugreifen. Habe ich eingefügt, ein Ausschnitt von meinem controller unten.

@Secured({ ROLE_ADMIN })
@RequestMapping(method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_VALUE } )
public HttpEntity<Resource<Item>> addItem(@RequestBody @Valid Item item) throws Exception {
    Resource<Item> itemResource = this.itemResourceAssembler.toResource(this.itemService.save(item));
    return new ResponseEntity<Resource<Item>>(itemResource, HttpStatus.CREATED);
}

Habe ich einige Prüfungen in itemService.save() zu sehen, ob ein Element in der Datenbank existiert bereits, seit dieses wird als upsert. Wenn ich den Zugriff auf das Element übergeben zu speichern bekomme ich die NullPointerException weil Element null ist. Ich habe versucht, mit der "required" - parameter von @RequestBody aber nur überprüfen, um zu sehen, ob es etwas Gepostet. Wie oben erwähnt, das null-Element wird nur Durchlaufen, wenn ein Benutzer Beiträge "null" ohne die Anführungszeichen als Text der Anforderung. Gibt es eine automatisierte Frühjahr Anmerkungen oder die Konfiguration zu beenden diese null von Durchlaufen, oder sollte ich einfach if(item == null) throw new Exception(); in alle meine Controller, wo diese könnten auftauchen?

InformationsquelleAutor Zasrin | 2014-04-25
Schreibe einen Kommentar