• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@SessionAttributes와 @ModelAttribute 질문있습니다!

20.12.01 00:35 작성 조회수 200

0

--sampleController

-- SampleControllerTest

핸들러 메소드 8부 강의를 듣고 있었는데 test잘 통과하던 createEvent 함수가 sampleController class에 sessionAttributes("event") 애노테이션을 붙이니깐 createEvent 함수가 실행되지 않았습니다. 

--console Error 

여기 강의 질문에서와 구글링 해봐서 나름 찾아본 결과,

ModelAttribute 애노테이션을 쓰면 sessionAttributes("event")에서 있는 지 확인해보는 데 처음에 없으면 에러를 뱉는다. 

였습니다. 그래서 SampleController 클래스에서 @ModelAttribute 선언 대신에 주석 단 위치에 model.addAttribute("event") 하니깐 test 가 에러없이 통과하는 것을 확인했습니다. 

ModelAttribute애노테이션을 쓰면 왜 createEvent test함수가 통과하지 못 하는 이유와 이것을 다른 방법으로 해결할 수 있는 지 궁금합니다.

간단하게라도 참고사항이나 가이드 주시면 감사하겠습니다!

답변 1

답변을 작성해보세요.

1

@SessionAttributes에 대해서는 "핸들러 메소드 8부 @SessionAttributes"에서 설명했지만 Model Attribute에 들어가는 객체 중에 일부를 세션에 넣어두고 여러 요청에 걸쳐 사용할 때 쓰라고 만들어 준 것입니다. 

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/SessionAttributes.html

그러니 세션에 넣으라고 했던 "event"가 없으니 에러가 난거죠. 해결 방법은 모델에 넣어두는게 맞는거구요. 다만 왜 써야 하는지? 무슨 의도로 @SessionAttributes를 쓰려고 한건지.. 그부분을 다시 생각해 보시면 좋겠습니다.