Jackson deserializuje ciąg "null" jako pusty obiekt żądania, który jest oczekiwany (chociaż dobrze byłoby móc wyłączyć to zachowanie).Sprężyna 4 - odrzucenie "null" @RequestBody dla wszystkich punktów końcowych
Poniższy kod wyzwala sprawdzanie poprawności w przypadku ładunku "{}", ale nie w przypadku ładunku "zerowego". To zmusza mnie do zrobienia kolejnej kontroli dla ładunku pustego, co nie wydaje mi się normalne, ponieważ PayloadValidator może zawierać samo sprawdzanie zerowej wartości.
@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
}
- Czy istnieje sposób ogólny odrzucenia zerowej @RequestBody całkowicie (czyli dla wszystkich punktów końcowych)?
- Jeśli nie, czy mogę mieć całą logikę walidacji w jednym miejscu i być automatycznie wyzwalana (tj. Przez @Validated lub @Valid)?
Dziękuję Emanuela
Dzięki, otworzyłem [wydanie jiry] (https://jira.spring.io/browse/SPR-13490) –