인프런 커뮤니티 질문&답변

ㅇㅇㅇㅇㅇㅇ님의 프로필 이미지

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

Model 추가 - v3

mv.getModel().put("member",member);

작성

·

674

0

이 부분에서

ModelView mv = new ModelView("save-result")

mv.getModel().put("member",member);

이렇게 하면 결과가 어떻게 되는 건가요?

mv.setModel().put("member",member);

을 해야 맞는거 같은데

잘 이해가 안되서 질문 드립니다.

답변 1

1

안녕하세요, ㅇㅇㅇㅇㅇㅇ 님. 공식 서포터즈 y2gcoder 입니다.

저희가 해야 하는 작업을 보면

  1. ModelView타입인 mv 객체에서 Map<String, Object> 인 model 객체를 가져와서

  2. 해당 model 객체(Map 객체입니다.)에 put() 메서드를 이용해서 "member"라는 이름의 key로 member 객체를 value로 넣어줘야 합니다.

여기서 헷갈리신 부분은 1번 부분이라고 생각합니다.

mv.setModel()이라면 setModel() 메서드는 모델 객체를 가져오는 게 아니라 mv 객체에 model 객체를 설정해주는 메서드입니다.

public void setModel(Map<String, Object> model) {
          this.model = model;
}

그리고 해당 메서드는 반환 타입이 void 입니다.

아마 실제로 위에 적어주신

mv.setModel().put("member",member);

를 해보시면 아시겠지만 setModel() 의 반환타입이 void이고 model 객체를 가져온 게 아니기 때문에 put() 메서드를 연결해서 호출할 수 없습니다.

public Map<String, Object> getModel() {
          return model;
}

getModel() 메서드를 사용해서 model 객체를 가져와야 해당 객체가 가지고 있는 put() 메서드를 사용하여 model 객체 안에 key와 value를 추가하실 수 있습니다.

감사합니다.

이해가 됐습니다. 감사합니다 ^_^