• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

질문

20.09.12 17:26 작성 조회수 95

0

@GetMapping("/modify")

public String modify(@RequestParam("board_info_idx") int board_info_idx,

@RequestParam("content_idx") int content_idx,

@ModelAttribute("modifyContentBean") ContentBean modifyContentBean , 

Model model) {

model.addAttribute("board_info_idx", board_info_idx);

model.addAttribute("content_idx", content_idx);

ContentBean readContentBean = boardService.getContentInfo(content_idx);

modifyContentBean.setContent_writer_name(readContentBean.getContent_writer_name());

modifyContentBean.setContent_date(readContentBean.getContent_date());

modifyContentBean.setContent_subject(readContentBean.getContent_subject());

modifyContentBean.setContent_text(readContentBean.getContent_text());

modifyContentBean.setContent_file(readContentBean.getContent_file());

modifyContentBean.setContent_writer_idx(readContentBean.getContent_writer_idx());

modifyContentBean.setContent_board_idx(readContentBean.getContent_board_idx());

modifyContentBean.setContent_idx(readContentBean.getContent_idx());

return "board/modify";

}

여기서 contentbean 객체를 하나 생성해서 

modelattribute의 modifyContentBean 객체에

set해서 다시 넣어 줬는데 혹시

바로 modelattribute의 modifyContentBean 객체

modifyContentBean  = boardService.getContentInfo(content_idx);

이런식으로는 왜안되는지 알고 싶습니다

해보니까 결과값들이 비어있는채로 나오더라구요

답변 1

답변을 작성해보세요.

0

이건 스프링에 관련된 내용이 아닌 자바 언어에 관련된 이야기 입니다. modifyContentBean은 객체의 주소값을 담는 참조 변수일 뿐입니다. 매개변수로 modelAttribute로 정의한 modifyContentBean 변수에는 요청발생시 SpringFramework가 생성하고 request 영역에 저장한 객체의 주소값을 담아주게 됩니다. 허나 메서드 내부에서 다른 객체의 주소값을 넣었기 때문에 modifyContentBean에는 request영역에 저장된 객체가 아닌 다른 객체의 주소값을 담고 있게 됩니다. 따라서 jsp에서 사용하는 bean은 데이터가 담겨있지 않게 된 request 영역에 저장된 객체를 사용하게 됩니다.