site_link1 | |
---|---|
site_link2 | |
site_link3 |
http://yunsunghan.tistory.com/259
tiles2는 Spring MVC와 연동시 그 뷰 네임을 definition 네임으로 하기 때문에 각각의 뷰마다 각각의 definition이 있어야 하므로 번거롭기 짝이없다. tiles2기반으로 프로젝트를 하는 사람들이 이를 간과할리 없다. 찾아보니 Dynamic-tiles2라는 간단한 라이브러리가 그것을 도와준다.
Dynamic-tiles2는 David Winterfeldt라는 사람이 http://www.springbyexample.org/ 운영하면서 만든 라이브러리이다. Spring의 2개의 클래스를 확장하고 1개의 클래스로 처리하는 비교적 초간단 라이브러리이다.(소스코드를 보면 어렵지 않게 이해할수 있다.) 사이트는 이외에도 간단한 예제들이 많이 있어 Spring을 처음 접하는 사람에게 유용하리라 생각된다.
기본에 이어서 설명한다ViewResolver를 아래와 같이 변경한다.
[기존]
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
[신규]
<bean id="tilesViewResolver" class="org.springbyexample.web.servlet.view.tiles2.TilesUrlBasedViewResolver">
<property name="viewClass" value="org.springbyexample.web.servlet.view.tiles2.DynamicTilesView" />
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
<property name="tilesDefinitionName" value="default" />
<property name="tilesBodyAttributeName" value="body" />
<property name="tilesDefinitionDelimiter" value="." />
</bean>
<property name="viewClass" value="org.springbyexample.web.servlet.view.tiles2.DynamicTilesView" />
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
<property name="tilesDefinitionName" value="default" />
<property name="tilesBodyAttributeName" value="body" />
<property name="tilesDefinitionDelimiter" value="." />
</bean>
tilesDefinitionName 은 기본 tiles의 Definition 이름이고, tilesBodyAttributeName 은 해당 바뀔 속성의 이름이다. tilesDefinitionDelimiter 상속시 구분자이다. 본 라이브러리를 보면 알겠지만 각각의 Spring UrlBasedViewResolver 와 TilesView를 확장하여 간단히 확장한 소스이다.(이게 spring의 장점중에 하나이다.)
어쨌든 이와 같이 ViewResolver를 설정하고 tiles2 설정을 아래와 같이 변경한다..
[기존]
<definition name=".default" template="/WEB-INF/templates/main.jsp">
<put-attribute name="title" value="Simple Tiles 2 Example" type="string" />
<put-attribute name="header" value="/WEB-INF/templates/header.jsp" />
<put-attribute name="footer" value="/WEB-INF/templates/footer.jsp" />
<put-attribute name="menu" value="/WEB-INF/templates/menu.jsp" />
<put-attribute name="body" value="/WEB-INF/templates/blank.jsp" />
</definition>
<definition name="index" extends="default">
<put-attribute name="body" value="/WEB-INF/jsp/index.jsp" />
</definition>
<definition name="member/list" extends="default">
<put-attribute name="body" value="/WEB-INF/jsp/member/list.jsp" />
</definition>
<put-attribute name="title" value="Simple Tiles 2 Example" type="string" />
<put-attribute name="header" value="/WEB-INF/templates/header.jsp" />
<put-attribute name="footer" value="/WEB-INF/templates/footer.jsp" />
<put-attribute name="menu" value="/WEB-INF/templates/menu.jsp" />
<put-attribute name="body" value="/WEB-INF/templates/blank.jsp" />
</definition>
<definition name="index" extends="default">
<put-attribute name="body" value="/WEB-INF/jsp/index.jsp" />
</definition>
<definition name="member/list" extends="default">
<put-attribute name="body" value="/WEB-INF/jsp/member/list.jsp" />
</definition>
[신규]
<definition name=".default" template="/WEB-INF/templates/main.jsp">
<put-attribute name="title" value="Simple Tiles 2 Example" type="string" />
<put-attribute name="header" value="/WEB-INF/templates/header.jsp" />
<put-attribute name="footer" value="/WEB-INF/templates/footer.jsp" />
<put-attribute name="menu" value="/WEB-INF/templates/menu.jsp" />
<put-attribute name="body" value="/WEB-INF/templates/blank.jsp" />
</definition>
<put-attribute name="title" value="Simple Tiles 2 Example" type="string" />
<put-attribute name="header" value="/WEB-INF/templates/header.jsp" />
<put-attribute name="footer" value="/WEB-INF/templates/footer.jsp" />
<put-attribute name="menu" value="/WEB-INF/templates/menu.jsp" />
<put-attribute name="body" value="/WEB-INF/templates/blank.jsp" />
</definition>
IndexController는 변함이 없다.
@RequestMapping("/index.do")
public void index(ModelMap model){
model.addAttribute("msg","Donkey!!");
}
public void index(ModelMap model){
model.addAttribute("msg","Donkey!!");
}
요약하면, 기존의 tiles2 설정에서 viewresolver를 Dynamic-tiles2 라이브러리 함수로 바꾸고 tiles 설정파일을 기존의 각각의 definition 네임를 제거하면 된다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
18 | (Bing) Mustache 의 특징 | 황제낙엽 | 2023.12.21 | 82 |
17 | JSTL과 Velocity를 활용한 UI 레이어 구현 방법 | 황제낙엽 | 2007.01.30 | 402 |
16 | 벨로시티에서 loop 작성 | 황제낙엽 | 2005.12.13 | 158 |
15 | Tiles2 간단한 예제 맛보기 | 황제낙엽 | 2009.10.20 | 111 |
» | Spirng MVC 와 Tiles 2 연동하기(응용) | 황제낙엽 | 2009.10.13 | 106 |
13 | Spirng MVC 와 Tiles 2 연동하기(기본) | 황제낙엽 | 2009.10.13 | 95 |
12 | 검색엔진 루씬 Lucene... Analyzer의 선택 | 황제낙엽 | 2007.11.27 | 181 |
11 | Sitemesh와 JSP 파일 이름 | 황제낙엽 | 2007.08.16 | 107 |
10 | SiteMesh를 이용하여 웹 페이지의 레이아웃을 처리 | 황제낙엽 | 2007.08.13 | 127 |
9 | Cactus를이용한효율적인테스트전략 | 황제낙엽 | 2007.01.30 | 103 |
8 | Xdoclet 사용하기 2부 | 황제낙엽 | 2006.10.04 | 102 |
7 | Xdoclet 사용하기 1부 | 황제낙엽 | 2006.10.04 | 118 |
6 | Jakarta Lucene (루씬) - 들어가기 | 황제낙엽 | 2007.07.30 | 120 |
5 | [Hibernate] Hibernate Tutorial | 황제낙엽 | 2012.11.15 | 247 |
4 |
[Hibernate] 하이버네이트 참조문서 버전 3.2 cr3의 최신 업데이트 한글 번역본
![]() | 황제낙엽 | 2007.07.03 | 172 |
3 | [Hibernate] 페이징 처리 정리 | 황제낙엽 | 2007.02.26 | 515 |
2 | [Hibernate] Hibernate 프레임워크를 이용한 효율적인 개발 전략 | 황제낙엽 | 2007.01.30 | 452 |
1 |
[Hibernate] Hibernate 와 Ant 에서 composite id 사용하기 예제
![]() | 황제낙엽 | 2005.11.29 | 219 |