Search

48. 스프링부트 포토그램 프로필 페이지 회원정보 수정 오류 해결하기

프로필 페이지

이제 회원정보 변경 누르면
no session 오류가 뜬다.
UserController.java에서
sysout 찍어서 생기는 오류다
우선 주석처리를 해준다
@GetMapping("/user/{id}/update") public String update(@PathVariable int id, @AuthenticationPrincipal PrincipalDetails principalDetails) { //1. 추천 //System.out.println("세션 정보 :" +principalDetails.getUser()); //2. 복잡(비추천) //Authentication auth = SecurityContextHolder.getContext().getAuthentication(); //PrincipalDetails mPrincipalDetails = (PrincipalDetails)auth.getPrincipal(); //System.out.println("직접 찾은 세션 정보 :" +mPrincipalDetails.getUser()); return "user/update"; }
Java
복사
이제 프로필 변경으로 들어가진다.
제출 누르면 반응이 없고 콘솔로가면
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:472) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:129) ~[tomcat-servlet-api-9.0.43.jar:4.0.FR] at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:129) ~[tomcat-servlet-api-9.0.43.jar:4.0.FR] at org.springframework.security.web.util.OnCommittedResponseWrapper.sendError(OnCommittedResponseWrapper.java:116) ~[spring-security-web-5.4.6.jar:5.4.6] at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:129) ~[tomcat-servlet-api-9.0.43.jar:4.0.FR] at org.springframework.security.web.util.OnCommittedResponseWrapper.sendError(OnCommittedResponseWrapper.java:116) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.sendServerError(DefaultHandlerExceptionResolver.java:553) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.handleHttpMessageNotWritable(DefaultHandlerExceptionResolver.java:443) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.doResolveException(DefaultHandlerExceptionResolver.java:210) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:141) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1320) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1131) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1077) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.6.jar:5.3.6]
Java
복사
오류가 떨어진다
UserApiController에서 update 함수에서
요부분에서 오류가 발생하고 있다.
전에랑 같은 현상인데 User 객체를 호출하면서 image를 호출하게 되고 또 Image 안에 User를 호출하게 되면서 무한 반복이 일어나게 된다. 이걸 막아줘야하는데
응답할때 JSON으로 파싱하게 되는데 내부에서 user를 JSON 파싱을 막으면 된다
User.java
@JsonIgnoreProperties({"user"}) private List<Image> images; //양방향 맵핍
Java
복사
getter 호출할때 JSON파싱에서 user를 제외하라고 어노테이션 추가해주면된다.
이걸 안하면 무한참조를 하게되니까 잘 기억해두자.
수정 후 제출하면은
성공

*참고