에서 보냈습니다. 필터 및 인터셉터를 사용하여 컨트롤러 메서드에서 제출 된 응답을 수정하려고했지만 필터 또는 인터셉터를 실행하기 전에 응답이 커밋 됨으로 인해 수행 할 수 없었습니다. 우리는 ResponseBodyAdvice가있는 다른 옵션을 알고 있지만 HTTP 상태를 기반으로 응답을 수정하기 때문에 올바른 작업을 수행 할 수 없습니다. 어떤 사람이 저에게 알려 주시면 알려주세요. 봄 부츠와 나머지로 어떻게 성취 할 수 있습니까?변경 응답을 나머지 컨트롤러
답변
네, 할 수 있습니다. 인터셉터를 만들어야하는 XYZ 클래스를 만든 다음 해당 클래스를 HandlerInterceptorAdapter
클래스로 확장합니다.
preHandle(...)
postHandle(...)
afterConcurrentHandlingStarted(...)
afterCompletion(...)
그래서, 당신의 필요에 따라, 당신은 즉 최후의 수단으로 사용할 수 있습니다 : afterCompletion(...)
방법 때문에 다음과 같이 지금까지 내가 기억하는이 클래스는 당신이 무시할 수있는 네 가지 방법을 가지고 있습니다 이 메소드는 클라이언트에게 뷰를 렌더링 할 준비가되었을 때 실행된다.
그런 다음 xml 패턴을 사용하는 경우 해당 클래스 XYZ를 <mvc:interceptor>
태그 안에 bean으로 등록해야합니다.
위에서 언급했듯이, Aftercompletion을 실행하기 전에 응답이 커밋됩니다. 따라서 응답이 커밋 된 후에는 – Nadendla
을 수행 할 수 없으며 postHandle() 메소드를 사용하여 뷰를 최종 변경합니다 .. @ user3004406 –
"HTTP 상태에 따라 응답 수정" 이 상태를 어떻게 얻었습니까? 컨트롤러 방법 중 하나를 게시하십시오. 또한 해당 컨트롤러 메서드의 응답에서 수행 할 작업을 설명하십시오. –
@RamanujanR 필터 및 인터셉터의 응답 객체에서 Response 상태로 응답 할 수 있지만 ResponseBodyAdvice에서는 응답 할 수 없습니다. – Nadendla