Can view the tutorials best in Google Chrome, Mozilla Firefox, Opera, higher version of Internet Explorer

Working With Struts 2 Tiles, Struts 2 Tiles Example

Struts » On Oct 29, 2011 | { 5 Comments }

let us see how to work with tiles frame work in struts 2, tiles is the real time concept every body must know.  Actually tiles applications is little different than other applications we worked up to now, let us see what are the changes need to do before going to the application.

  • We must create tiles.xml to configure the pages, and this tiles.xml file must be in web-inf  folder only just like web.xml
  • In the web.xml file add the following code
<context-param>
<param-name>
org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>

<listener>
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>

<filter>
 ----------
  ------------

Following jars file need to be added in lib folder of our web application, in order to work with this tiles framework in struts 2

  • commons-beanutils-1.7.0.jar
  • commons-collections-3.1.jar
  • commons-digester-2.0.jar
  • commons-fileupload-1.2.1.jar
  • commons-io-1.3.2.jar
  • commons-lang-2.3.jar
  • commons-logging-1.1.jar
  • freemarker-2.3.13.jar
  • struts2-convention-plugin-2.1.6.jar
  • struts2-core-2.1.6.jar
  • struts2-tiles-plugin-2.2.1.jar
  • tiles-api-2.0.6.jar
  • tiles-core-2.0.6.jar
  • tiles-jsp-2.0.6.jar
  • xwork-2.1.2.jar
  • ognl-2.6.11.jar

Example

Files required….

  • index.jsp
  • body.jsp
  • footer.jsp
  • head.jsp
  • baseLayout.jsp
  • page1.jsp
  • page2.jsp
  • web.xml
  • tiles.xml
  • struts.xml
  • LogingEx.java

Directory Structure

index.jsp

<META HTTP-EQUIV="Refresh" CONTENT="0;URL=welcomeLink.action">

body.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

<h2>This Is welcome Body</h2>

footer.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

<center>
Copyrights java4s.com
</center>

head.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<center>
<h4> Your Blog Header </h4>

<a href="<s:url action="welcomeLink"/>" >Home</a>
<a href="<s:url action="page1Link"/>" >Page1</a>
<a href="<s:url action="page2Link"/>" >Page2</a>
</center>
<br>

baseLayout.jsp

<%@ 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">

        <table border="1" align="center" width="400px;">
            <tr>
                <td height="30" colspan="2">
                    <tiles:insertAttribute name="myHeader" />
                </td>
            </tr>
            <tr>
                <td>
                    <tiles:insertAttribute name="myBody" />
                </td>
            </tr>
            <tr>
                <td>
                    <tiles:insertAttribute name="myFooter" />
                </td>
            </tr>
        </table>

page1.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

<h2> This is page 1</h2>

page2.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

<h2> This is page 2</h2>

web.xml

<?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_2_5.xsd" id="WebApp_ID" version="2.5">

 <context-param>
    <param-name>
      org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
    </param-name>
    <param-value>/WEB-INF/tiles.xml</param-value>
  </context-param>

  <listener>
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
  </listener>

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

tiles.xml

<?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="welcome" template="/baseLayout.jsp">
      <put-attribute name="myHeader" value="/head.jsp"/>
      <put-attribute name="myBody"   value="/body.jsp"/>
      <put-attribute name="myFooter"   value="/footer.jsp"/>
  </definition>  

  <definition name="page1" extends="welcome">
      <put-attribute name="myBody"   value="/page1.jsp"/>
  </definition>

    <definition name="page2" extends="welcome">
      <put-attribute name="myBody"   value="/page2.jsp"/>
   </definition>

</tiles-definitions>

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>
    <package name="default" extends="struts-default">

        <result-types>
            <result-type name="tiles" />
        </result-types>

        <action name="*Link" method="{1}" class="java4s.LogingEx">
            <result name="welcome" type="tiles">welcome</result>
            <result name="page1" type="tiles">page1</result>
            <result name="page2" type="tiles">page2</result>
        </action>

    </package>
</struts>

LogingEx.java

package java4s;
import com.opensymphony.xwork2.ActionSupport;

public class LogingEx extends ActionSupport {

    private static final long serialVersionUID = -2613425890762568273L;

    public String welcome()
    {
        return "welcome";
    }

    public String page1()
    {
        return "page1";
    }
    public String page2()
    {
        return "page2";
    }    

}

Outputs

 

 

 

What you are thinkig....

5 Responses to “Working With Struts 2 Tiles, Struts 2 Tiles Example”
  1. Twinkle Stardust says:

    its throwing an error :

    type Status report

    message There is no Action mapped for namespace / and action name welcomeLink.

    description The requested resource (There is no Action mapped for namespace / and action name welcomeLink.) is not available.

  2. Java4s says:

    @ Twinkle

    Yeah you almost reached :-)
    Even i faced thisproblem initially, do one thing, try to change welcomeLink to some thing else.
    .
    so you need to do the changes in
    LogingEx.java, struts.xml, tiles.xml too hope you know this.

    Hey do it carefully and slowly if you are fresher i will help you.

  3. Eduardo says:

    Hi!
    I have a question.
    about this example, if only i need refresh page1 without refresh others, how can I do this?.

    thanks

  4. Java4s says:

    @ Eduardo

    Like gmail ? :-)
    Then you need to use Json,Ajax Calls.

  5. deepak says:

    anyone tell me how to use persistence in struts tiles … give a demo also plzzzzzzzzzz

If you want a pic to show with your comment, go get a gravatar !
Please post your questions on Java4s Answers forum

Name*
Ask a Question ?
or
Mail*
Website



By posting your answer, you agree to our comments policy.
Most Recent Tutorials
Hibernate Recent Posts
Spring Recent Posts
Struts Recent Posts
Recomandded Links Current & UpComing Tutorials Java4s.com
Tutorials Online :
spring Hibernate struts Json Ajax Log4j Log4j
coreJava Servlets


UpComing :
Servlets, Jsps
is optimized for learning java technologies, all the examples in this site are constantly reviewed to avoid errors. While using this site you agree to have read and accepted our terms of use and privacy policy
Especially i have prepared this blog by keeping fresher's in mind, however it will be very useful for real time developers too.


© 2013 Java4s All rights reserved. | strPro4Tut v(2.0) Theme designed by str-Graphics.com