Whiteship's Note

'ParameterizableViewController'에 해당되는 글 1건

  1. 2007.05.10 13.3.2. Other simple controllers (4)

13.3.2. Other simple controllers

Spring/Chapter 13 : 2007. 5. 10. 11:28


ParameterizableViewController 를 사용하면 AbstractController 와 기능은 같지만 veiw 이름을 Configuration 파일에서 설정할 수 있습니다.
사용자 삽입 이미지
위의 인터페이스를 보면 viewName이라는 멤버 변수가 있고 setter injection 사용하여 설정 파일로 부터 view 이름을 설정 할 수 있다는 것을 알 수 있습니다.
사용자 삽입 이미지

AbstractController와의 관계는 다음과 같습니다. 실제 구현한 코드도 예상 했던 것 만큼이나 매우 간결합니다.

 public class ParameterizableViewController extends AbstractController {
   
   private String viewName;


   /**
    * Set the name of the view to delegate to.
    */
   public void setViewName(String viewName) {
       this.viewName = viewName;
   }

   /**
    * Return the name of the view to delegate to.
    */
   public String getViewName() {
       return viewName;
   }

   protected void initApplicationContext() {
       if (this.viewName == null) {
           throw new IllegalArgumentException("viewName is required");
       }
   }


   /**
    * Return a ModelAndView object with the specified view name.
    */
   protected ModelAndView handleRenderRequestInternal(RenderRequest request, RenderResponse response)
           throws Exception {

       return new ModelAndView(getViewName());
   }

}

'Spring > Chapter 13' 카테고리의 다른 글

13.4.2. SimpleUrlHandlerMapping  (0) 2007.05.11
13.4.1. BeanNameUrlHandlerMapping  (0) 2007.05.11
13.4. Handler mappings  (0) 2007.05.11
13.3.4. Command controllers  (0) 2007.05.11
13.3.3. The MultiActionController  (2) 2007.05.10
13.3.2. Other simple controllers  (4) 2007.05.10
13.3.1. AbstractController and WebContentGenerator  (0) 2007.05.10
13.3. Controllers  (0) 2007.05.09
13.2. The DispatcherServlet  (0) 2007.05.07
13.1. Introduction  (0) 2007.05.07
13. Web MVC framework  (0) 2007.05.07
top

  1. mansoo 2009.01.05 11:03 PERM. MOD/DEL REPLY

    안녕하세요~글 잘 읽고 있습니다. 한가지 질문이 있는데요
    ParameterizableViewController 를 사용할 때 command 클래스를 사용할 수 없는 것 같은데요(맞나요?) 그렇다면 AbstractCommandController 를 사용할 때 view 이름을 Configuration 파일에 작성하고 싶다면 어떻게 해야 할까요?

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2009.01.05 11:29 신고 PERM MOD/DEL

    1. ParameterizableViewController는 Command 객체를 사용하지 않습니다. API에서 클래스 계층 구조를 보시면 아실 수 있죠.

    2. AbstractCommandController 이 녀석은 view 이름을 설정파일에서 설정할 수가 없습니다. 이것도 역시 API에 보시면 외부에서 설정 가능한 속성이 무엇인지 나와있습니다. 이 녀석을 확장해서 view 속성을 추가하고 setter를 만든담에 handleRequest에서 해당 view 속성을 가지고 ModelAndView를 만들어 반환하도록 확장하면 가능하겠지만.. 귀찮을 것 같습니다.

    저도 궁금한 것이 있는데요.

    1. 위 두 개의 컨트롤러에 대한 질문에 어떤 연관성이 있는지?? 질문에서 '그렇다면' 으로 연결이 되어 있는데요. 연관성을 찾아보기가 힘들어서요 @_@

    2. 어떤 요청을 처리할 때 AbstactCommandController를 사용하고 계시는지요? 어떤 상황이라고 해야 할까요? 저는 저걸 써본적이 없어서요. MAC나 SFC만 써봤거든요. 그것도 옛날에.. 요즘은 애노테이션 기반 MVC를 쓰고 있어서 저런 API나 저 컨트롤러들의 각각의 특성이나 flow를 익혀둘 필요가 없어져서 잘 기억이 안나네요.

  2. mansoo 2009.01.06 20:38 PERM. MOD/DEL REPLY

    1. 네 지금 spring mvc 를 공부하고 있어서 별것도 아닌것에 궁금점이 많습니다 ^^;;;;;;;;;
    일단 제 질문에서 두 컨트롤러사이의 연관성은 없습니다. 단지 제가 AbstractCommandController 를 사용하다가 모든 viewName 을 configuration 파일에 작성하고 싶어 검색해보던중
    ParameterizableViewController 가 튀어 나왔고 AbstractCommandController 에는 property 로 viewName을 줄수없나? 하는 생각이 들어서 질문드린거에요.

    2. 지금 게시판을 만들어보고있는데요 AbstractCommandController 를 리스트에서 사용하려 했습니다. 그 이유가 간단한 게시판이라서 리스트에 form 처리가 없는데요 많이 쓸모없는 녀석이라면 다른 것을 사용하는 것이 나을지요? 컨트롤러는 전부 세개를 사용했는데요 간단한 페이지 로딩에는
    ParameterizableViewController, 글입력, 수정 등에는 SimpleFormController, 그리고 방금 말한대로
    리스트에 AbstractCommandController 를 사용했습니다. 최대한 적절한 컨트롤러를 사용하고 싶은데 개념이 좀 없네요 ^^;;;;;;;;;;;;;

    조언하나 구해봅니다. 가장 많이 사용되는 컨트롤러가 SimpleFormController 라고 어디서 본것 같은데요 그렇다면 간단한 페이지 로딩외의 대부분에 사용해도 될까요?

    p.s : 컨트롤러하고 밸리데이션에 대한 정보을 님의 블로그에서 많이 얻었습니다. 감사드려요~

    Favicon of http://whiteship.me BlogIcon 기선 2009.01.07 09:16 PERM MOD/DEL

    어떤 컨트롤러를 어디에 사용해야 좋을까?에 대한 해답은 경험과 스프링 API 문서를 통해 익히시는게 좋을 듯 합니다. 말씀드렸다시피 저도 스프링 컨트롤러 계층 구조는 아주 옛날에만 사용해본터라 @_@

    MultiActionController(MAC)를 사용해 보세요.

    자바5를 쓸 수 있는 환경이라면 이런거 다 기억에서 지우시고 애노테이선 기반 스프링 MVC 학습을 추천해드리고 싶네요.

Write a comment.