Jackson deserializes chuỗi "null" như là một cơ thể yêu cầu rỗng được mong đợi (mặc dù nó sẽ là tốt đẹp để có thể chuyển đổi hành vi này).Mùa xuân 4 - từ chối "null" @RequestBody cho tất cả các thiết bị đầu cuối
Mã bên dưới kích hoạt xác thực trong trường hợp trọng tải "{}" nhưng không phải trong trường hợp trọng tải "không". Điều này buộc tôi phải làm một kiểm tra khác cho payload null mà không có vẻ bình thường với tôi kể từ khi PayloadValidator có thể bao gồm kiểm tra null chính nó.
@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
}
- Có một cách chung chung của việc từ chối @RequestBody rỗng hoàn toàn (ví dụ: cho tất cả các thiết bị đầu cuối)?
- Nếu không, tôi có thể có tất cả logic xác thực ở một nơi và được kích hoạt tự động (tức là thông qua @Validated hoặc @Valid) không?
Cảm ơn bạn, Emanuel
Cảm ơn, đã mở [vấn đề jira] (https://jira.spring.io/browse/SPR-13490) –