<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Struts2TilesIntegration</display-name> <welcome-file-list> <welcome-file>user</welcome-file> </welcome-file-list> <context-param> <param-name> org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG </param-name> <param-value> /WEB-INF/tiles-def.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <listener> <listener-class> org.apache.struts2.tiles.StrutsTilesListener </listener-class> </listener> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>The above code configure Tiles listener in web.xml. An input configuration file /WEB-INF/tiles-def.xml is passed as argument. This file contains the Tiles definition for our web application.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://tiles.apache.org/dtds/tiles-config_2_0.dtd"> <tiles-definitions> <definition name="mainTemplate" template="/mainTemplate.jsp"> <put-attribute name="title" value="User Registration Form"/> <put-attribute name="header" value="/header.jsp"/> <put-attribute name="menu" value="/menu.jsp"/> <put-attribute name="body" value="/body.jsp"/> <put-attribute name="footer" value="/footer.jsp"/> </definition> <definition name="alia" extends="mainTemplate"> <put-attribute name="title" value="Alia Bhatt"/> <put-attribute name="body" value="/alia.jsp"/> </definition> <definition name="madhuri" extends="mainTemplate"> <put-attribute name="title" value="Madhuri Dixit"/> <put-attribute name="body" value="/madhuri.jsp"/> </definition> <definition name="success" extends="mainTemplate"> <put-attribute name="title" value="User Added Successfully"/> <put-attribute name="body" value="/success.jsp"/> </definition> </tiles-definitions>Here in tiles-def.xml we have define a template mainTemplate. This layout contains attributes such as Header, Title, Body, Menu and Footer. The layout is then extended and new definitions for alia, madhuri and success page is defined. We have override the default layout and changed the content for Body and Title.
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title><tiles:insertAttribute name="title" ignore="true"></tiles:insertAttribute> </title> </head> <body> <table border="1"> <tr> <td colspan="2"><tiles:insertAttribute name="header"></tiles:insertAttribute><br/></td> </tr> <tr> <td><tiles:insertAttribute name="menu" /></td> <td><tiles:insertAttribute name="body" /></td> </tr> <tr> <td colspan="2"><tiles:insertAttribute name="footer" /></td> </tr> </table> </body> </html>body.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <style type="text/css"> b{color:navy; background-color: orange;} </style> <title>Struts2-Spring-Tiles integration | dineshonjava.com</title> </head> <body> <h2>Add User</h2><b> <s:form action="addUsermenu"> <s:textfield name="userName" key="user.name" /> <s:textfield name="userAge" key="user.age" value=""/> <s:radio name="userGender" key="user.gender" list="{'Male','Female'}" /> <s:select name="userJob" key="user.job" list="%{#{'Software':'Software','Hardware':'Hardware','Networking':'Networking','Marketing':'Marketing'}}"/> <s:checkboxlist name="userHobbies" key="user.hobby" list="{'Cricket','Football','Drawing','Cooking','Driving','Movie'}" /> <s:submit key="submit" align="center"/> </s:form> </b> </body> </html>header.jsp
<table> <tr> <td><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigLfv3kjqhAdKY-8AAmcqRrreOQVs_ihYfGPS9vbgZVbMRT1fRyRjYhexAcRvK1ANZU2ZiD_eeRFfbCD5i9HnuppsdJqmsqW7pnL7hG5faTi9ZE-_IyaiDTAjDhisYrnchAsSKLDqwZ2g/s1600/new-logo.png" /></td> <td><h1><span style="background-color: #FFFFcc">Struts2-Tiles-Spring integration</span></h1></td> </tr> </table>footer.jsp
<center><p><h2>Copyright © 2013 dineshonjava.com</h2></p> </center>menu.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <a href="<s:url action="usermenu"/>"> <h2>Add User</h2></a><br> <a href="<s:url action="aliamenu"/>"><h2>Alia Bhatt</h2></a><br> <a href="<s:url action="madhurimenu"/>"><h2>Madhuri Dixit</h2></a><br>success.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Struts2-Spring-Tiles integration | dineshonjava.com</title> </head> <body> <h2>List of User</h2> <ul> <li>User Name : <s:property value="userName" /></li> <li>User Age : <s:property value="userAge" /></li> <li>User Gender : <s:property value="userGender" /></li> <li>User Jobs : <s:property value="userJob" /></li> <li>User Hobbies : <s:property value="userHobbies" /></li> </ul> </body> </html>madhuri.jsp
<img src="http://www.topnews.in/files/Madhuri-Dixit_10.jpg" height="430" width="500" alt="Madhuri Dixit"/>alia.jsp
<img src="http://cdntopics.onepakistan.com/wp-content/uploads/2012/10/Alia-Bhatt1.jpg" alt="Alia Bhatt"/>Step 6: Register Spring Bean
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:component-scan base-package="com.dineshonjava.struts2.bean" /> <bean id="user" class="com.dineshonjava.struts2.action.UserAction"> </bean> <bean id="userBean" class="com.dineshonjava.struts2.bean.UserBean"> </bean> </beans>Step 7: Create Action class and User bean.
package com.dineshonjava.struts2.action; import org.springframework.beans.factory.annotation.Autowired; import com.dineshonjava.struts2.bean.UserBean; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; /** * @author Dinesh Rajput * */ public class UserAction extends ActionSupport implements ModelDriven<UserBean>{ private static final long serialVersionUID = 1L; @Autowired private UserBean userBean; public String execute() { return "user"; } public String addUser() { return "addUser"; } @Override public UserBean getModel() { return userBean; } public String alia() { return "alia"; } public String madhuri() { return "madhuri"; } public String user() { return "user"; } }
package com.dineshonjava.struts2.bean; /** * @author Dinesh Rajput * */ public class UserBean { private String userName; private int userAge; private String userGender; private String userJob; private String []userHobbies; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getUserAge() { return userAge; } public void setUserAge(int userAge) { this.userAge = userAge; } public String getUserGender() { return userGender; } public void setUserGender(String userGender) { this.userGender = userGender; } public String getUserJob() { return userJob; } public void setUserJob(String userJob) { this.userJob = userJob; } public String[] getUserHobbies() { return userHobbies; } public void setUserHobbies(String[] userHobbies) { this.userHobbies = userHobbies; } }Step 8: Modifications in Struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <constant name="struts.custom.i18n.resources" value="myapp" /> <package name="user" extends="struts-default" namespace="/"> <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> </result-types> <action name="user" class="user" method="execute"> <result name="user" type="tiles">mainTemplate</result> </action> <action name="*menu" class="user" method="{1}"> <result name="user" type="tiles">mainTemplate</result> <result name="madhuri" type="tiles">madhuri</result> <result name="alia" type="tiles">alia</result> <result name="addUser" type="tiles">success</result> </action> </package> </struts>
user.name=User Name user.age=User Age user.gender=Gender user.job=Job Type user.hobby=Hobbies submit=Add User
Labels: struts2