그래서 내가 입력에게 요청 본문 소요 컨트롤러가 있습니다스프링 부트 - Jackson에서 UnrecognizedPropertyException을 수동으로 처리하는 방법은 무엇입니까?
@RestController
@RequestMapping("/foo/bar")
public class FooBarController {
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> doTheFoo(@RequestBody MyDto dto) {
...
}
}
을 그리고 나는이 FOOBAR 있습니다
public clas FooBar {
@JsonProperty("foo")
private String foo;
public void setFoo(String foo) { ... }
public String getFoo() { ... }
}
그리고 알 수없는 특성에 실패 내 속성에서 설정 한 :
spring.jackson.deserialization.fail-on-unknown-properties: true
또한 실패를 캡처하고 처리 할 수있는 처리기가 있습니다.
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(UnrecognizedPropertyException.class)
public ResponseEntity<?> handleUnrecognizedPropertyException(UnrecognizedPropertyException ex) {
...
}
}
하지만 알 수없는 속성으로 내 끝점에 POST 할 때 (예 : {"bar": "baz"}
), GlobalExceptionHandler가 실행되지 않고 바닐라 400 BAD REQUEST가 리턴됩니다. 알 수없는 속성 예외를 가로 채고 다른 응답을 제공하려면 어떻게합니까?
알 수없는 속성이 게시되지 않으면 컨트롤러가 올바르게 작동합니까? – dieend
그건 중요하지 않습니다. 400 오류 요청이있는 빈 페이지가 아니라 사용자 지정 오류 페이지를 반환하고 싶습니다. – Ben
4xx는 클라이언트 오류 요청이기 때문에 묻습니다. 컨트롤러가 json을 요청하는 동안 게시물이 양식으로 전송 되었기 때문입니까? 아니면 예외 처리기가 지정된 예외를 포착하지 못하게 만든 다른 이유 일 수 있습니다. – dieend