Apache Tiles is a popular and mostly used templating framework for java based web application. Tiles became more popular because Struts 1.x uses Tiles as its default templating framework. SpringMVC which is an MVC framework, like Struts, also supports integration of Tiles as its templating framework.
Let us see how we can integrate SpringMVC and Tiles.
You can download Tiles binaries from here
Step#1: Add the following tiles jars to WEB-INF/lib folder.
- tiles-api-2.2.2.jar
- tiles-core-2.2.2.jar
- tiles-jsp-2.2.2.jar
- tiles-servlet-2.2.2.jar
- tiles-template-2.2.2.jar
Step#2: Configure tiles integration in WEB-INF/dispatcher-servlet.xml
<beans>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles.xml</value>
</list>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
</bean>
</beans>
Step#3: Configure tiles definitions in WEB-INF/tiles.xml
<!--?xml version="1.0" encoding="UTF-8"?--> <tiles-definitions> <definition name="baseLayout" template="/jsp/layout/layout.jsp"> <put-attribute name="title" value="SivaLabs" /> <put-attribute name="header" value="/jsp/layout/header.jsp" /> <put-attribute name="navigation" value="/jsp/layout/navigation.jsp" /> <put-attribute name="body" value="" /> <put-attribute name="footer" value="/jsp/layout/footer.jsp" /> </definition> <definition name="login" extends="baseLayout"> <put-attribute name="title" value="SivaLabs : Login" /> <put-attribute name="navigation" value="" /> <put-attribute name="body" value="/jsp/login.jsp" /> </definition> <definition name="welcome" extends="baseLayout"> <put-attribute name="title" value="SivaLabs : Welcome" /> <put-attribute name="body" value="/jsp/welcome.jsp" /> </definition> </tiles-definitions>
Step#4: Code the layout JSPs
layout.jsp
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<html>
<head>
<title><tiles:insertAttribute name="title" ignore="true" /></title>
<script type="text/javascript" src="js/sivalabs.js"></script>
</head>
<body>
<table border="1" style="border-collapse: collapse;" cellpadding="2" cellspacing="2" align="center" width="800"> <tbody><tr>
<td height="30" colspan="2"><tiles:insertAttribute name="header" /></td>
</tr>
<tr>
<td width="150" height="450" valign="top">
<tiles:insertAttribute name="navigation" />
</td>
<td valign="top" width="650">
<tiles:insertAttribute name="body" />
</td>
</tr>
<tr>
<td height="30" colspan="2">
<tiles:insertAttribute name="footer" />
</td>
</tr>
</tbody></table></body>
</html>
header.jsp
<h2>SivaLabs : My Experiments On Technology</h2>
footer.jsp
<center> <b>© 2011 SivaLabs All Rights Reserved</b> </center>
navigation.jsp
<p><a href="createUser.do">Create User</a></p><p><a href="listUsers.do">View Users</a></p><p><a href="logout.do">Logout</a></p>
welcome.jsp
<h2>Welcome to SpringMVC+Tiles Sample Application </h2>
Step#5:
WelcomeController.java
package com.sivalabs.web.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class WelcomeController
{
@RequestMapping("welcome")
public String welcome()
{
return "welcome";
}
}
Here the String “welcome” will be resolved as a tile name and display the UI as per “welcome” tile configuration.
Reference: SpringMVC 3 + Tiles 2.2.2 Integration from our JCG partner K. Siva at the My Experiments on Technology
Happy coding
Byron
Related Articles :





