Spring

@SessionAttributes

Cal-D 2020. 2. 8. 17:49

@SessionAttributes는 수정 작업을 처리할 때 , 유용하게 사용할 수 있는 어노테이션. 

 

updateBoard.do 실행하면 작성자 이름 : null확인 가능. (현재 게시판은 title, Content만 수정가능.) 즉 수정가능한 내용인 title과 content를 제외한건 vo객체에 다 null이 들어가는 상황. 

 

매개변수에 modelAttribute를 적용해주고, 클래스 위에  SessinoAttributes를 board로 해준다. 

board로 해준 이유는 아래 그림을 보면 model에 board라는 이름으로 객체를 추가하기 때문.

이번에는 작성자이름 등록일,(수정 불가능한)을 업데이트를 통해 가져온걸 볼 수 있다. 

 

정리 ----------------------------------------------------------------------------------------------------

 

사용자가 글 수정 버튼을 클릭하면, updateBoard()메소드 실행. BoardController의 updateBoard()메소드가 호출될 때, 스프링 컨테이너는 우선 @ModelAttribute("board")설정을 해석하여 세션에 board라는 이름으로 저장된 데이터가 있는지 확인.

있닫면 해당 객체를 세션에서 꺼내서 매개변수로 선언된 vo 변수에 할당.

그리고 사용자가 입력한 파라미터값을  vo객체에 할당. 

이때 사용자가 입력한 수정 정보값만 새롭게 할당되고(title,content)

 

나머지 는 상세보기를 했을때 세션에 저장된 데이터가 유지.(getBoard.do) 할때 저장된 데이터. 

 

 

 @SessionAttrubutes("board")설정. 

   사용자가 상세 화면을 요청하면 getBoard()세도느는 검색 결과인 BoardVO객체를 board라는 이름으로  Model에 저장.

이때, BoardController클래스에 선언되 @SessionAttributes("board")설정이 중요한데,

 

이는 Model에 "board"라는 이름으로 저장된 데이터가 있다면 그 데이터를 세션(HttpSession)에도 자동으로 저장하라는 설정이다.