봄 MVC에서 HandlerInterceptor.afterCompletion()이 응답 코드를 변경합니다.
저는 스프링 MVC 프레임워크를 사용하고 있습니다.예외가 발생할 때마다 오류 상태를 기록하고 싶습니다.afterCompletion
사용되는 방법HanlderInterceptor
.
@Override
public void afterCompletion( final HttpServletRequest request, final HttpServletResponse response, final Object handler, final Exception ex)
{
final int responseCode = response.getStatus();
s_logger_error.error("status code: " + responseCode );
}
이 코드는 로컬 컴퓨터에서 응용 프로그램으로 실행하면 잘 작동합니다.그러나 Jetty 서버에서 호스팅하면 UI가 올바른 오류 응답을 받습니다(나의 경우).409
), 그러나 이 방법에서는 로 기록됩니다.200
.
[원격 디버그의 이미지가 표시되는 위치status=200
하지만 그에 대한 반응은 그렇습니다.409
]
누가 응답 코드에 변경이 있는 이유를 이해하는 것을 도와줄 수 있습니까?
스프린트 1.1.7을 사용하고 있습니다.릴리스 스프링 부트 버전 및 제트 분배-9.2.10.v20150310.
당신은 당신이 전화했는지 확인해야 합니다.setStatus
당신의 방법response
예외에 대한 반대
이 문제를 해결하려면 스프링 부트 버전 1.1.11로 업그레이드하면 문제를 해결할 수 있습니다.이것은 이 수정과 관련이 있습니다.수정하기 전에,ErrorPageFilter
랩된 응답의 응답 상태를 마스킹하는 것이었습니다.sendError
메소드가 명시적으로 호출되지 않았습니다.ErrorWrapperResponse
.
수정 후 코드가 단순에서 변경되었습니다.return this.status
로.
if (this.errorToSend) {
return this.status;
}
else {
// If there was no error we need to trust the wrapped response
return super.getStatus();
}
그것이 업그레이드가 당신의 문제를 해결할 것이라고 믿는 이유입니다.
마지막으로 문제가 지속될 경우 디버깅을 통해 문제의 원인을 표시해야 합니다.
언급URL : https://stackoverflow.com/questions/30049232/handlerinterceptor-aftercompletion-in-spring-mvc-changes-response-code
'programing' 카테고리의 다른 글
HTML/CSS의 전체 div에 대한 href 링크 (0) | 2023.08.17 |
---|---|
View Model Providers는 1.1.0에서 더 이상 사용되지 않습니다. (0) | 2023.08.17 |
Twitter 부트스트랩:모달 대화 상자를 닫는 방법? (0) | 2023.08.17 |
오라클 sysdba 암호 복구 또는 변경 방법 (0) | 2023.08.17 |
가로 세로 비율을 유지하면서 비례적으로 이미지 크기를 조정하는 방법은 무엇입니까? (0) | 2023.08.12 |