'스프링이야기'에 해당되는 글 1건

  1. 2009.10.26 [봄싹]spring 바인딩 관련.. (@SessionAttributes("")) (2)
봄싹2009.10.26 19:26

@Controller
@SessionAttributes("meeting")
public class MeetingController {

public String meetingView(@PathVariable int meetingId, Model model) {
}
}

이렇게 해주면.. 
model.getAttribuite("meeting") 해주면 . meeting 객체가 들어가 있다.. 

이걸 해주는 코드는 .. 

HandlerMethodInvoker 이라는 .. 놈의 129 line ~ 134 line 까지...
for (String attrName : this.methodResolver.getActualSessionAttributeNames()) {
Object attrValue = this.sessionAttributeStore.retrieveAttribute(webRequest, attrName);
if (attrValue != null) {
implicitModel.addAttribute(attrName, attrValue);
}
}

이부분이다 .. 

대충 말하자면 .. SessionAttributes 여기에 담긴 놈들은 SessionAttributeStore 에 올라가있고 .. 
implicitModel 이놈 즉.. 기본적인 Mode( BindingAwareModelMap) 이놈한테 put 해준다. 

결론 부터 이야기 하자면... SessionAttributes 담은 객체는 SessionStatus의 setComplete()를 호출 해주기 전까지.. 계속 담긴다.. ;; 
봄싹의 문제점은.. json string을 만들때.. model로 왕창 다 넘겨 주는데.. 
SessionAttributes  담겨 잇는 ob 까지 만들면서 .. 불필요한 스트링 포함... 하이버네이트 Persistent 상태인 object 까지..(JackJson lib 를 이용하면 문제는 없다..) json 스트링으로 만들려다가.. 별의 별 예외를 다 낸다.. ;; 

해결책은 간단히 생각하면... 그냥 model을 지우고 시작하면 된다.. 
그런데 그건 맘에 들지 않으니.. 간지나는 방법이 어디 없을까나;; 흠냥;; ~~ 

Posted by is윤군