Whiteship's Note

SimpleFormController's onSubmit()



오버로딩을 사용해서 같은 이름의 메소드가 세 개 있었습니다.

보통은 onSubmit(Object command) 이 녀석만 사용했었는데요. 세션에 객체 하나를 담고 싶어서 아래와 같은 코드가 onSubmit() 메소드 안에 추가 되어야 했습니다.

request.getSession().setAttribute("user", member);

그러나... request 인자가 onSubmit() 메소드에 없는 것입니다. 그래서 이를 어쩌나..했는데 찬욱군이 onSubmit() 메소드가 세 개가 있는데 그중에 request 객체를 받아오는 녀석이 있다고 알려줘서 찾아봤습니다.

Spring MVC 155쪽에 나와있는 그림을 보니 어떤 메소드 들이 있고 어떻게 동작하는지 명확히 알 수 있었습니다.
사용자 삽입 이미지
인자가 제일 많은 녀석 부터 시작해서 하나 인 녀석 순으로 내부에서 호출하게 되는 것 같습니다. 이 걸 코드로 표현하면 아래 처럼 될 것입니다.

protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {
    //할 일
    onSubmit(command, errors);
}

protected ModelAndView onSubmit(Object command, BindException errors) throws Exception {
    //할 일
    onSubmit(command);
}

protected ModelAndView onSubmit(Object command) throws Exception {
    //할 일
    doSubmitAction(formBean);
}

이 중에서 필요한 인자에 따라 필요한 녀석을 오버라이딩해서 사용하면 될 것 같습니다. 사용자(개발자) 편의를 위한 계층화라고 생각되네요.


'Spring MVC > 6장 Controller' 카테고리의 다른 글

AbstractController  (0) 2007.06.21
Non-String DataBinding 테스트하기  (0) 2007.06.21
간단한 DataBinding 테스트하기  (0) 2007.06.20
MultiactionController  (0) 2007.06.19
SimpleFormController's onSubmit()  (0) 2007.04.11
SimpleFormController  (0) 2007.02.28
Controller  (0) 2007.02.28
top

Write a comment.