HttpServletResponse
의 sendRedirect
메서드를 사용하다가 다음과 같은 메시지가 나왔다.
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committedat javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138)at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138)at org.springframework.security.web.firewall.FirewalledResponse.sendRedirect(FirewalledResponse.java:41)at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138)at org.springframework.security.web.util.OnCommittedResponseWrapper.sendRedirect(OnCommittedResponseWrapper.java:128)at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138)at org.springframework.security.web.util.OnCommittedResponseWrapper.sendRedirect(OnCommittedResponseWrapper.java:128)
이런 코드가 발생하는 경우를 찾아보면, 다음처럼 되어 있었다.
String redirectUrl = request;if(user == UserStatus.EMAIL_VERIFY) {response;}if(request || request) {response;}response;
예외 메시지를 살펴보니 sendRedirect
메서드가 호출된 이후에 재호출하려고 하면 java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
가 출력되는 것이다. 호출된 이후에는 다시 호출할 수 없다는 뜻으로 변경할 수 없다는 뜻이다.
이에 대한 해결책을 좀 찾아봤다.
이걸 해결항 수 있는 방법으로는,
String redirectUrl = request;if(user == UserStatus.EMAIL_VERIFY) {response;} else if(request || request) {response;} else {response;}
와 같은 방식으로 완전히 조건문 내에서 한번만 호출되도록 처리하거나,
String redirectUrl = request;if(user == UserStatus.EMAIL_VERIFY) {redirectUrl = URL_SIGNUP_PROGRESS;}if(request || request) {redirectUrl = URL_ROOT;}response;
위의 코드처럼 조건을 모두 마친 후에 마지막에 sendRedirect
를 호출하는 것이다. 마지막 방법이 좀 더 괜찮은 처리방법이라는 생각이…
'Java > Framework & Libs' 카테고리의 다른 글
[hibernate] org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags: (0) | 2016.11.09 |
---|---|
[spring] 어제의 삽질, ViewController 설정 때문에... (2) | 2016.09.13 |
20160806 Spring MVC 에서 엑셀다운로드 기능 구현하기 (0) | 2016.08.06 |
[spring security] 스프링 시큐리티 + OTP 를 이용한 2단계 인증 예제 (3) | 2016.06.19 |
[thymeleaf] dialect 정의하기 (0) | 2016.06.10 |