Recently i while doing a R&D sort of thing on my ide’s (eclipse
and netbeans) i encountered on a struts 2 application.I read its
documentation on the page and decided to give it a try as i went
through the features.Getting started with struts 2 was a piece of cake
, more ever with the site-mesh integration it just blew me off.It
worked fine.However off late i encountered a requirement stating usage
of tiles with struts 2 .Initially i thought of it as easy but as i
ususally feel of easy things , it turned out to be real pain.Eventually
a couple of hours of fight saw me through the struts 2 defences and led
to a good integration of tiles2 with struts .This is a walk through is
to achieve the same.The versions for struts 2 and tiles 2 used are
2.0.6 and any further versions haven’t been tested by me.
Assumptions:
- JDK 1.5 installed
- Tomcat 6.0 installed
- You can create a struts 2 web application in eclipse or any other ide.
The process involves the following steps:
- Download the binaries
- Changing the configuration files for application.
1.Download the binaries
I have used struts 2.0.6 libraries , which can be downloaded from Here .
Tiles 2.0.6 binaries can be downloaded from Here
Extract the jar’s from both the zip files and put them in your lib directory of your web project.
2. Changing the configuration files for application.
This involves changing web.xml ,struts.xml and tiles .xml
web.xml
Add following section to web.xml
<listener>
<listener-class>
org.apache.struts2.tiles.StrutsTilesListener
</listener-class>
</listener>
<context-param>
<param-name>tilesDefinitions</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
struts.xml
add following section to struts.xml
<package name=”org.action” extends=”tiles-default” >
<action name=”myaction” class=”org.action.YourAction”>
<result name=”INPUT” type=”tiles”>tiles:test</result>
</action>
</package>
here “org.action” is the package name in which the action class resides.
tiles.xml
add the following snippet to tiles.xml file within “tiles-definitions”
<definition name=”tiles:layout” template=”/WEB-INF/pages/layout.jsp”>
<put name=”body” value=”"/>
</definition>
<definition name=”tiles:test” extends=”tiles:layout”>
<put name=”body” value=”/WEB-INF/pages/test.jsp”/>
</definition>
Rest of the struts 2 application remains unaltered. Note that
tiles.xml should be in WEB-INF folder as mentioned in the web.xml.The
jsp’s and action should be present at correct locations and its all
done .