Spring 3 MVC: Tiles Plugin Tutorial with Example in Eclipse

Welcome to Part 4 for Spring 3.0 MVC Series. In previous article we saw how to create a form using Spring 3 MVC and display it in JSP. Also we learn about annotation @ModelAttribute.

In this part we will discuss about Tiles Framework and its Integration with Spring 3.0 MVC. We will add Tiles support to our HelloWorld Spring application that we created in previous parts. I strongly recommend you to go through previous articles and download the source code of our sample application.

Introduction to Tiles 2

Nowadays, website are generally divided into pieces of reusable template that are being rendered among different web pages. For example a site containing header, footer, menu etc. This items remains same through out the website and give it a common look and feel. It is very difficult to hard code this in each and every webpage and if later a change is needed than all the pages needs to be modified. Hence we use templatization mechanism. We create a common Header, Footer, Menu page and include this in each page.

Tiles Plugin allow both templating and componentization. In fact, both mechanisms are similar: you
define parts of page (a “Tile”) that you assemble to build another part or a full page. A part can
take parameters, allowing dynamic content, and can be seen as a method in JAVA language. Tiles is a templating system used to maintain a consistent look and feel across all the web pages of a web application. It increase the reusability of template and reduce code duplication.

A common layout of website is defined in a central configuration file and this layout can be extended across all the webpages of the web application.

Our Application Layout

Our goal is to add Header, Footer and Menu to our Spring 3 HelloWorld application. Following will be the layout of the same.

tiles-framework-layout

Required JAR files

In order to add Tiles support to our Spring3 application, we will need few jar files. Following is the list of JARs in our example. Add these JARs in WEB-INF/lib folder.
spring-3-tiles-framework-jar
The highlighted jar files in above list are the new jars to be added in project for Tiles integration.

Configuring Tiles framework in Spring MVC

To configure Tiles, an entry for bean TilesConfigure has to be made in spring-servlet.xml. Open the spring-servlet.xml from WEB-INF folder and add following code between <beans> </beans> tag.

File: /WebContent/WEB-INF/spring-servlet.xml

	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.UrlBasedViewResolver">
		<property name="viewClass">
			<value>
				org.springframework.web.servlet.view.tiles2.TilesView
			</value>
		</property>
	</bean>
	<bean id="tilesConfigurer"
		class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
		<property name="definitions">
			<list>
				<value>/WEB-INF/tiles.xml</value>
			</list>
		</property>
	</bean>

An input configuration file /WEB-INF/tiles.xml is passed as argument in above bean definition. This file contains the Tiles definition for our web application.

Create a file tiles.xml in WEB-INF folder and copy following code into it.
tiles-xml-spring-mvc

File: WebContent/WEB-INF/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="base.definition"
		template="/WEB-INF/jsp/layout.jsp">
		<put-attribute name="title" value="" />
		<put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
		<put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" />
		<put-attribute name="body" value="" />
		<put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
	</definition>

	<definition name="contact" extends="base.definition">
		<put-attribute name="title" value="Contact Manager" />
		<put-attribute name="body" value="/WEB-INF/jsp/contact.jsp" />
	</definition>

</tiles-definitions>

Here in tiles.xml we have define a template base.definition. This layout contains attributes such as Header, Title, Body, Menu and Footer. The layout is then extended and new definitions for Contact page. We have override the default layout and changed the content for Body and Title.

Creating View – The JSPs

spring-tiles-jsp-files

We will define the template for our webapplication in a JSP file called layout.jsp. This template will contain different segments of web page (Header, Footer, Menu etc). Create four new JSP files layout.jsp, header.jsp, menu.jsp and footer.jsp and copy following content in each of them.

File: WebContent/WEB-INF/jsp/layout.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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><tiles:insertAttribute name="title" ignore="true" /></title>
</head>
<body>
<table border="1" cellpadding="2" cellspacing="2" align="center">
	<tr>
		<td height="30" colspan="2"><tiles:insertAttribute name="header" />
		</td>
	</tr>
	<tr>
		<td height="250"><tiles:insertAttribute name="menu" /></td>
		<td width="350"><tiles:insertAttribute name="body" /></td>
	</tr>
	<tr>
		<td height="30" colspan="2"><tiles:insertAttribute name="footer" />
		</td>
	</tr>
</table>
</body>
</html>

File: WebContent/WEB-INF/jsp/header.jsp

<h1>Header</h1>

File: WebContent/WEB-INF/jsp/menu.jsp

<p>Menu</p>

File: WebContent/WEB-INF/jsp/footer.jsp

<p>Copyright &copy; ViralPatel.net</p>

That’s All Folks

Compile and Execute the application in Eclipse and see that the header, menu and footer are properly applied.
spring-tiles-demo-screen-contact-manager

Download Source Code

Click here to download Source Code (8.88kb).

Moving On

Today we saw how we can configure Tiles framework with Spring 3 MVC application. We used org.springframework.web.servlet.view.tiles2.TilesConfigurer class in bean definition to define the tiles configuration file. In next part we will discuss about Internationalization/Localization and adding its support in Spring 3 MVC. I hope you liked this article. Feel free to post your queries and comments in comment section.



112 Comments

  • Ashwini 16 April, 2012, 16:24

    The tiles n Spring MVC integration has been explained so neatly. I could understand easily.. Thank you!

    • sanjay 8 February, 2013, 12:44

      Really excellent …
      Hi how to be a excellent java progrmmer,could you please advise me..

      Thanks,
      Sanjay

  • kavitha 16 April, 2012, 16:28

    nic explanation

  • Amit Goley 22 April, 2012, 12:57

    I want to validate my form using JSR hibernate validator @valid annotation.
    My application is configured with spring mvc 3 and tiles 2.
    But when i submit the form to validate it given the following error

    when submitting the form in createresource.jsp action=”submitCreateResource.do”
    Ideally it should go to “jspCreateResource” tiles definition and show error messages on createresource.jsp (form page)

    But it is giving the following error.

    Please help me to validate this from properly.

    error

    javax.servlet.ServletException: Could not resolve view with name ‘error’ in servlet with name ‘spring’
    org.springframework.web.servlet.DispatcherServlet. render(DispatcherServlet.java:1139)
    org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:927)
    org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:827)

    **spring-servlet.xml**

    org.springframework.web.servlet.view.tiles2.TilesV iew

    /WEB-INF/tiles.xml

    **tiles.xml**

    —————

    Resourcepojo
    —————
    public class ResourcePojo {

    @NotNull
    @NotEmpty (message = “Employee Id can not be blank.”)
    private int empid;
    @NotNull
    @NotEmpty (message = “First Name can not be blank.”)
    @Size(max = 10 , message=”First name should be between 1 to 50 Characters”)
    private String firstname;
    @NotEmpty (message = “Last Name can not be blank.”)

    **Resourcecontroller.java**

    @Controller
    public class ResourceController {

    @RequestMapping(value = “/createresource”, method = RequestMethod.GET)
    public ModelAndView createResource() {

    Map model = new HashMap();
    model.put(“resource”, new ResourcePojo());

    return new ModelAndView(“jspCreateResource”, model);
    }

    @RequestMapping(value= “/submitCreateResource”,method = RequestMethod.POST)
    public String processForm(@ModelAttribute(value=”resource”) @Valid ResourcePojo resource
    ,BindingResult result,ModelMap model ,HttpSession session){

    System.out.println(“in processForm line 45″);
    if(result.hasErrors()){
    System.out.println(“ERROR”);
    return “jspCreateResource”;
    }
    return null;
    }

    }
    —————————

    **createresource.jsp**
    —————————-

    Insert title here

    Create Resource

    Employee Id

    First Name

    Last Name

    Full Name

    Date of Birth

    Company DOJ

    Project DOJ

  • Morgan 31 May, 2012, 1:21

    Where do you get the JAR files from? I would like to get the most updated version of the JAR files available since this tutorial was written almost 2 years ago.

    • raheel 18 February, 2013, 1:45

      use maven

  • SJ 10 June, 2012, 22:16

    I am getting this exception “Cannot find a factory to create the request context”
    Did i am missing any jars to include in the classpath

    • Bharatkumar 28 July, 2012, 1:56

      I faced same problem. I found the error cause was jar version. I got it worked with following maven dependency…

      org.apache.tiles
      tiles-core
      2.2.1

      org.apache.tiles
      tiles-jsp
      2.1.1

      org.apache.tiles
      tiles-servlet
      2.2.2

      Cheers !!
      Nice Example !!!

      • aimanSD 1 September, 2012, 10:59

        The problem solve with your suggestion tq

  • Morgan 27 June, 2012, 8:40

    Where do you download the JAR files you used in this example?

  • Nikhitha 3 July, 2012, 21:43

    cannot Deploy TilesMVC
    Pls help. I have done the Tiles tutorial as explained in this blog.But I am getting the following error

    Deployment Error for module: TilesMVC: Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.io.FileNotFoundException: ServletContext resource [/ /WEB-INF/tiles.xml ] cannot be resolved to URL because it does not exist. Please see server.log for more details.

  • Undread 16 July, 2012, 17:15

    I dont get the use of this. I rather use jsp:include to include the different parts of the page I need because anyways I am defining the tiles in an xml AND also using the tiles tags to include the appropriate pages on the jsp. With jsp:include I avoid the overhead of the xml file.

  • Sergio 18 July, 2012, 1:14

    First of all thanks for the tutorial. I’m having problems with Apache Tiles when I try to run the app:

    java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    org.apache.tiles.startup.AbstractTilesInitializer.(AbstractTilesInitializer.java:45)
    org.apache.tiles.startup.BasicTilesInitializer.(BasicTilesInitializer.java:37)

    I have tried using different versions of the slf4j jars, and they are in the build path and in the classpath.
    Can anybody help me?

  • jAKEER 24 July, 2012, 13:47

    could you plaese explain ? why you mentioned contacts.html ?forward in index.jsp .

    and how to i get screen ?

  • indrasri 27 July, 2012, 17:36

    Hi viral ,

    I hv downloaded the mvc examples .I tried with HelloWord example but when I request the page I dont get the view . I get 404 page not found exception.
    I dont find any exception in the console . but I find the following -

    WARNING: [SetContextPropertiesRule]{Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:HelloWorld’ did not find a matching property.
    27 Jul, 2012 5:28:59 PM org.apache.catalina.startup.TaglibUriRule body
    INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
    27 Jul, 2012 5:28:59 PM org.apache.catalina.startup.TaglibUriRule body

    INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/HelloWorld-servlet.xml]
    27 Jul, 2012 5:29:00 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
    INFO: Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@21fb3211]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1531164
    27 Jul, 2012 5:29:00 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
    INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1531164: defining beans [helloWorldController,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,defaultHandlerMapping,/hello/hello.jsp,org.springframework.web.servlet.view.InternalResourceViewResolver#0]; root of factory hierarchy
    27 Jul, 2012 5:29:00 PM org.springframework.web.servlet.FrameworkServlet initServletBean
    INFO: FrameworkServlet ‘HelloWorld’: initialization completed in 377 ms

    • SpeedOverload 15 December, 2012, 1:29

      It is a good exercise to learn the process :) ( process only *.html throu the web-inf file. )

      Say welcome

  • yellappa 5 August, 2012, 18:59

    I downloaded the source code. After integrating Spring and Tiles. I am getting the exception, The exception details is given below.

    java.lang.UnsupportedOperationException: Class org.apache.tiles.web.util.ServletContextAdapter not recognized a TilesApplicationContext
    org.apache.tiles.factory.TilesContainerFactory.createContainer(TilesContainerFactory.java:225)
    org.springframework.web.servlet.view.tiles2.TilesConfigurer.createTilesContainer(TilesConfigurer.java:214)
    org.springframework.web.servlet.view.tiles2.TilesConfigurer.afterPropertiesSet(TilesConfigurer.java:201)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:476)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:412)
    java.security.AccessController.doPrivileged(Native Method)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:383)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:276)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:273)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:175)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:485)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:716)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:377)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:427)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:341)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:662)

    Please solve my problem.

    • Giedrius 26 February, 2013, 17:56

      I had the same problem. I saw that my libs of springframework are 3.0.0 version, so i dowloaded 3.0.1-A as it is in example and it worked just fine. I hope it helps for you.

  • latha 7 August, 2012, 15:01

    thanks u example, very good example, but for me getting this error.

    java.lang.NoClassDefFoundError: org/apache/tiles/startup/BasicTilesInitializer
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2901)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
    at java.lang.Class.getDeclaredConstructors(Class.java:1836)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:228)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:911)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:884)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:663)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:477)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
    at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:745)
    at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:716)
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:68)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    at java.lang.Thread.run(Thread.java:619)

  • Sarvesh Bhatnagar 27 August, 2012, 11:24

    Hi ,
    I am using tiles 222 with Spring 305 . I defined the following tile configuration in my context.

    org.springframework.web.servlet.view.tiles2.TilesView

    /WEB-INF/views/views.xml

    Then in views.xml I defined following definitions

    BUT THE PROBLEM is that when I return the “home” logical name from my controller , only the main_template.jsp is rendered , not the main_template and home.jsp both. WHAT COULD BE THE POSSIBLE REASON. PLEASE HELP ME OUT

  • Akhmad Mizkat 30 August, 2012, 13:23

    you could download the Tiles from http://www.apache.org/dyn/closer.cgi/tiles/v3.0.1/tiles-3.0.1-bin.zip

  • franjo 5 September, 2012, 21:25

    Hey Morgan, try to download the same jar versions as posted here. Doesn’t matter if they are old versions, they will work for this example. I downloaded tiles-2.2.2-bin.zip and the remaining files just got them one by one from Google!.

  • nicola 23 September, 2012, 16:14

    Error creating bean with name ’tilesConfigurer’ defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule

    ……

    • Omar Córdova 4 October, 2012, 3:33

      About java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule, I got the same error while using any of the commons-digester-3.x.x.jar, I changed it to commons-digester-2.1.jar and worked fine

  • Pandian 14 October, 2012, 2:59

    Still it is going to be old contacts.html page. no change and no errors spotted. Can you pls tell me how to check if tiles got loaded properly?

  • Pandian 14 October, 2012, 3:02

    I’ve added a log4j.xml to see the debug logs. I could see the following problem. Any ideas?

    INFO TilesConfigurer – TilesConfigurer: adding definitions [/WEB-INF/tiles.xml]
    DEBUG DefaultListableBeanFactory – Invoking afterPropertiesSet() on bean with name ’tilesConfigurer’
    INFO TilesConfigurer – Found JSP 2.1 ExpressionFactory
    INFO AbstractTilesApplicationContextFactory – Initializing Tiles2 application context. . .
    INFO AbstractTilesApplicationContextFactory – Finished initializing Tiles2 application context.
    DEBUG BasicTilesContainerFactory – Not available feature exception during instantiation of class ‘org.apache.tiles.portlet.context.PortletTilesRequestContextFactory’, ignoring problem
    org.apache.tiles.portlet.context.NotAPortletEnvironmentException: Cannot access portlet classes
    at org.apache.tiles.portlet.context.PortletTilesRequestContextFactory.(PortletTilesRequestContextFactory.java:68)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at org.apache.tiles.factory.BasicTilesContainerFactory.registerRequestContextFactory(BasicTilesContainerFactory.java:196)
    at org.apache.tiles.factory.BasicTilesContainerFactory.getTilesRequestContextFactoriesToBeChained(BasicTilesContainerFactory.java:170)
    at org.apache.tiles.factory.BasicTilesContainerFactory.registerChainedRequestContextFactories(BasicTilesContainerFactory.java:152)
    at org.apache.tiles.factory.BasicTilesContainerFactory.createRequestContextFactory(BasicTilesContainerFactory.java:139)
    at org.apache.tiles.factory.BasicTilesContainerFactory.createContainer(BasicTilesContainerFactory.java:98)
    at org.apache.tiles.startup.AbstractTilesInitializer.createContainer(AbstractTilesInitializer.java:124)
    at org.apache.tiles.startup.AbstractTilesInitializer.initialize(AbstractTilesInitializer.java:70)
    at org.springframework.web.servlet.view.tiles2.TilesConfigurer.afterPropertiesSet(TilesConfigurer.java:305)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1228)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1147)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1043)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
    Caused by: java.lang.NoClassDefFoundError: javax/portlet/PortletRequest
    at org.apache.tiles.portlet.context.PortletTilesRequestContextFactory.(PortletTilesRequestContextFactory.java:65)
    … 42 more
    Caused by: java.lang.ClassNotFoundException: javax.portlet.PortletRequest
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    … 43 more

  • Pandian 14 October, 2012, 3:06

    Again it is my fault, ignore plz

  • zerazobz 17 October, 2012, 2:32

    Don’t work with tiles.3.0.1

  • ansopa 23 October, 2012, 20:15

    Latha use the tiles-2.2.2-bin.zip version
    With the 3.x version don´t work

  • Dennis Stevens 29 October, 2012, 6:25

    Nice,

    Spring doesn’t work with Tiles 3.0 – so you have to download Tiles 2.2.

    That is the cause of the org.apache.tiles.startup.BasicTilesInitializer error.

    Dennis

    • Tushar 20 February, 2013, 15:24

      Hi Dennis Stevens :)
      Could you please guide me i am getting the following error

      Even after i have added the following Jars from

       http://www.apache.org/dyn/closer.cgi/tiles/v2.2.2/tiles-2.2.2-docs.zip 
       
      commons-beanutils-1.8.0.jar
      commons-digester-2.0.jar
      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
       

      The org/apache/tiles/startup/BasicTilesInitializer file is there in the jar but still shows the following error :(

       SEVERE: StandardWrapper.Throwable
      java.lang.NoClassDefFoundError: org/apache/tiles/startup/BasicTilesInitializer
          at java.lang.ClassLoader.defineClass1(Native Method)
          at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
          at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
          at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
          at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2904)
          at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173)
          at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681)
          at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
          at java.lang.Class.getDeclaredConstructors0(Native Method)
          at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
          at java.lang.Class.getDeclaredConstructors(Class.java:1836)
       
  • Spring 29 October, 2012, 14:31

    for NoClassdefnFoundError:org.apache.tiles.startup.BasicTilesInitializer

    Add spring related jars to /WEB-INF/lib directory

  • Andrea 2 November, 2012, 0:15

    Where can I find the jars file that I need to use tiles inside my Spring MVC project? I don’t fint it into Spring framework…

  • Rami 6 November, 2012, 3:16

    I tried it bu it gives me: Undeployed application at context path /
    I experienced struts2-tiles-plugin-2.1.6.jar and higher versions and nothing has changed

    Please help

  • Thara 15 November, 2012, 13:01

    Help me please I get the following error

    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: javax.servlet.ServletException: Servlet.init() for servlet spring threw exception
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:548)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:456)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

    root cause

    javax.servlet.ServletException: Servlet.init() for servlet spring threw exception
    org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:745)
    org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:716)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:71)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

    root cause

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name ’tilesConfigurer’ defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is org.apache.tiles.definition.DefinitionsFactoryException: Cannot load definition URLs
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1403)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
    javax.servlet.GenericServlet.init(GenericServlet.java:160)
    org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:745)
    org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:716)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:71)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

    root cause

    org.apache.tiles.definition.DefinitionsFactoryException: Cannot load definition URLs
    org.springframework.web.servlet.view.tiles2.TilesConfigurer$SpringTilesContainerFactory.getSourceURLs(TilesConfigurer.java:385)
    org.apache.tiles.factory.BasicTilesContainerFactory.createLocaleDefinitionDao(BasicTilesContainerFactory.java:298)
    org.apache.tiles.factory.BasicTilesContainerFactory.createDefinitionsFactory(BasicTilesContainerFactory.java:242)
    org.springframework.web.servlet.view.tiles2.TilesConfigurer$SpringTilesContainerFactory.createDefinitionsFactory(TilesConfigurer.java:418)
    org.apache.tiles.factory.BasicTilesContainerFactory.createContainer(BasicTilesContainerFactory.java:104)
    org.apache.tiles.startup.AbstractTilesInitializer.createContainer(AbstractTilesInitializer.java:124)
    org.apache.tiles.startup.AbstractTilesInitializer.initialize(AbstractTilesInitializer.java:70)
    org.springframework.web.servlet.view.tiles2.TilesConfigurer.afterPropertiesSet(TilesConfigurer.java:305)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
    javax.servlet.GenericServlet.init(GenericServlet.java:160)
    org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:745)
    org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:716)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:71)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

    root cause

    java.io.FileNotFoundException: ServletContext resource [/WEB-INF/tiles.xml
    ] cannot be resolved to URL because it does not exist
    org.springframework.web.context.support.ServletContextResource.getURL(ServletContextResource.java:132)
    org.springframework.web.servlet.view.tiles2.SpringTilesApplicationContextFactory$SpringWildcardServletTilesApplicationContext.getResources(SpringTilesApplicationContextFactory.java:105)
    org.springframework.web.servlet.view.tiles2.TilesConfigurer$SpringTilesContainerFactory.getSourceURLs(TilesConfigurer.java:380)
    org.apache.tiles.factory.BasicTilesContainerFactory.createLocaleDefinitionDao(BasicTilesContainerFactory.java:298)
    org.apache.tiles.factory.BasicTilesContainerFactory.createDefinitionsFactory(BasicTilesContainerFactory.java:242)
    org.springframework.web.servlet.view.tiles2.TilesConfigurer$SpringTilesContainerFactory.createDefinitionsFactory(TilesConfigurer.java:418)
    org.apache.tiles.factory.BasicTilesContainerFactory.createContainer(BasicTilesContainerFactory.java:104)
    org.apache.tiles.startup.AbstractTilesInitializer.createContainer(AbstractTilesInitializer.java:124)
    org.apache.tiles.startup.AbstractTilesInitializer.initialize(AbstractTilesInitializer.java:70)
    org.springframework.web.servlet.view.tiles2.TilesConfigurer.afterPropertiesSet(TilesConfigurer.java:305)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
    javax.servlet.GenericServlet.init(GenericServlet.java:160)
    org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:745)
    org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:716)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:71)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

    note The full stack trace of the root cause is available in the Apache Tomcat/7.0.19 logs.

  • navakireeti 19 November, 2012, 1:01

    this is gud one

  • Barney 28 November, 2012, 18:59

    Hi all!

    Thanks for the post. It is works for me very well.

    But How can I display dynamic data in a head/footer? For example I would like to display the user’s unread message number, and some information whick come from the database in the Head tile?

    It is a bad design that assign in every controller this information, because in every controller I must do that, and this is not manageable!

    Is there any way for the ReversePresenter Pattern (Like in GoogleWebToolkit – every view known there own presenter, and can ask data from it)?

    Or how other way can I assign dynamic information in a tile, which always show?

    Thanks
    Barney

    • Viral Patel 28 November, 2012, 19:38

      Hi Barney, You can create your own custom Spring MVC Interceptor which gets called before each request and in it you can set values to request as you want.

  • Yusril 2 December, 2012, 0:31

    Thanks Viral, Your tutorial is very helpfull :D

  • ravi 12 December, 2012, 12:30

    The tiles n Spring MVC integration has been explained so neatly. I could understand easily.. Thank you!

  • phet 28 December, 2012, 20:50

    Hi every one, i follow the exemple, i have a problem in the file

    /WebContent/WEB-INF/spring-servlet.xml

    i start from HelloWorldApp so i have oready the tag

    How can i add the tag:

    org.springframework.web.servlet.view.tiles2.TilesView

    help me please

  • mon 1 February, 2013, 10:19

    Very nice example

  • sasindran 14 February, 2013, 16:40
      type Exception report
    
    message
    
    description The server encountered an internal error () that prevented it from fulfilling this request.
    
    exception
    
    org.apache.jasper.JasperException: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/jsp/layout.jsp'.
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    
    root cause
    
    org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/jsp/layout.jsp'.
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:932)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706)
    	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:64)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    
    root cause
    
    org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/jsp/layout.jsp'.
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:692)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)
    	org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124)
    	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
    	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
    	org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706)
    	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:64)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    
    root cause
    
    org.apache.tiles.util.TilesIOException: ServletException including path '/WEB-INF/jsp/layout.jsp'.
    	org.apache.tiles.servlet.context.ServletUtil.wrapServletException(ServletUtil.java:241)
    	org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:243)
    	org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222)
    	org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
    	org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)
    	org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124)
    	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
    	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
    	org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706)
    	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:64)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    
    root cause
    
    org.apache.tiles.util.TilesIOException: JSPException including path '/WEB-INF/jsp/header.jsp'.
    	org.apache.tiles.servlet.context.ServletUtil.wrapServletException(ServletUtil.java:241)
    	org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:105)
    	org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96)
    	org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
    	org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
    	org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer.write(ChainedDelegateAttributeRenderer.java:76)
    	org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:336)
    	org.apache.tiles.template.InsertAttributeModel.renderAttribute(InsertAttributeModel.java:210)
    	org.apache.tiles.template.InsertAttributeModel.end(InsertAttributeModel.java:126)
    	org.apache.tiles.jsp.taglib.InsertAttributeTag.doTag(InsertAttributeTag.java:311)
    	org.apache.jsp.WEB_002dINF.jsp.layout_jsp._jspx_meth_tiles_005finsertAttribute_005f1(layout_jsp.java:130)
    	org.apache.jsp.WEB_002dINF.jsp.layout_jsp._jspService(layout_jsp.java:68)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)
    	org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222)
    	org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
    	org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)
    	org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124)
    	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
    	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
    	org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706)
    	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:64)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    
    root cause
    
    javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'label.title' for locale 'en'.
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    	org.apache.jsp.WEB_002dINF.jsp.header_jsp._jspService(header_jsp.java:71)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
    	org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:650)
    	org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:644)
    	org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:103)
    	org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96)
    	org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
    	org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
    	org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer.write(ChainedDelegateAttributeRenderer.java:76)
    	org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:336)
    	org.apache.tiles.template.InsertAttributeModel.renderAttribute(InsertAttributeModel.java:210)
    	org.apache.tiles.template.InsertAttributeModel.end(InsertAttributeModel.java:126)
    	org.apache.tiles.jsp.taglib.InsertAttributeTag.doTag(InsertAttributeTag.java:311)
    	org.apache.jsp.WEB_002dINF.jsp.layout_jsp._jspx_meth_tiles_005finsertAttribute_005f1(layout_jsp.java:130)
    	org.apache.jsp.WEB_002dINF.jsp.layout_jsp._jspService(layout_jsp.java:68)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)
    	org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222)
    	org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
    	org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)
    	org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124)
    	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
    	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
    	org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706)
    	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:64)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    
    root cause
    
    javax.servlet.jsp.JspTagException: No message found under code 'label.title' for locale 'en'.
    	org.springframework.web.servlet.tags.MessageTag.doStartTagInternal(MessageTag.java:185)
    	org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80)
    	org.apache.jsp.WEB_002dINF.jsp.header_jsp._jspx_meth_spring_005fmessage_005f0(header_jsp.java:90)
    	org.apache.jsp.WEB_002dINF.jsp.header_jsp._jspService(header_jsp.java:60)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
    	org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:650)
    	org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:644)
    	org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:103)
    	org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96)
    	org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
    	org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
    	org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer.write(ChainedDelegateAttributeRenderer.java:76)
    	org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:336)
    	org.apache.tiles.template.InsertAttributeModel.renderAttribute(InsertAttributeModel.java:210)
    	org.apache.tiles.template.InsertAttributeModel.end(InsertAttributeModel.java:126)
    	org.apache.tiles.jsp.taglib.InsertAttributeTag.doTag(InsertAttributeTag.java:311)
    	org.apache.jsp.WEB_002dINF.jsp.layout_jsp._jspx_meth_tiles_005finsertAttribute_005f1(layout_jsp.java:130)
    	org.apache.jsp.WEB_002dINF.jsp.layout_jsp._jspService(layout_jsp.java:68)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)
    	org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222)
    	org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
    	org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627)
    	org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)
    	org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124)
    	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
    	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
    	org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706)
    	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:64)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    
  • Tushar 20 February, 2013, 14:48

    Hi Viral Patel :)
    Nice example on Spring Tiles :)

    but i am getting the following problem

    Could you please help me :)

     SEVERE: StandardWrapper.Throwable
    java.lang.NoClassDefFoundError: org/apache/tiles/startup/BasicTilesInitializer
    	at java.lang.ClassLoader.defineClass1(Native Method)
    	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    	at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    	at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2904)
    	at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173)
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681)
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    	at java.lang.Class.getDeclaredConstructors0(Native Method)
    	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
    	at java.lang.Class.getDeclaredConstructors(Class.java:1836) 
  • Juzer Ali 6 March, 2013, 18:31

    Is it me or is this tutorial missing contact.jsp?

  • Vadim 13 March, 2013, 3:11

    For those who are interested in the maven support, you can use these dependencies to load needed jars:

    org.springframework
    spring-webmvc
    3.1.4.RELEASE

    javax.servlet
    jstl
    1.2

    org.apache.tiles
    tiles-jsp
    2.2.2
    jar
    compile

    org.slf4j
    slf4j-log4j12
    1.5.8
    jar
    compile

  • Kundan Atre 20 March, 2013, 17:05

    Dear Viral,
    Thanks for the great tutorial as always,
    i have doubt regarding contacts.html file why do we need such file.

  • Kundan Atre 20 March, 2013, 17:19

    Sorry please ignore my last post, i figured out :)

  • vivi 22 March, 2013, 5:18

    Thanks a lot. I followed this and it worked v.well. However, i do have a problem when trying to use put-list-attribute. The put-list-attributes won’t show up in jsp. I just added the put-list-attribute modifications to your code.

    <?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"&gt;
    <tiles-definitions>
        <definition name="base.definition"
            template="/WEB-INF/jsp/layout.jsp">
            <put-attribute name="title" value="" />
            <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
            <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" />
            <put-attribute name="body" value="" />
            <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
             <put-list-attribute name="baseStyles">
                <add-attribute type="string" value="/styles/css/reset.css"/>
                <add-attribute type="string" value="/styles/css/superfish.css"/>
                <add-attribute type="string" value="/styles/css/styles.css"/>
            </put-list-attribute>
        </definition>
     
        <definition name="contact" extends="base.definition">
            <put-attribute name="title" value="Contact Manager" />
            <put-attribute name="body" value="/WEB-INF/jsp/contact.jsp" />
        </definition>
     
    </tiles-definitions>
     

    Modifed layout.jsp

    <%@ taglib uri="http://tiles.apache.org/tags-tiles&quot; prefix="tiles"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core&quot; prefix="c" %>
    
    <tiles:useAttribute name="baseStyles" classname="java.util.List" ignore="true" />
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd"&gt;
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title><tiles:insertAttribute name="title" ignore="true" /></title>
    
    <c:forEach var="eachStyle" items="${baseStyles}">
    			<link type="text/css" rel="stylesheet" href="<c:out value='${eachStyle}'/>" />
    </c:forEach>
    
    </head>
    <body>
    <table border="1" cellpadding="2" cellspacing="2" align="center">
        <tr>
            <td height="30" colspan="2"><tiles:insertAttribute name="header" />
            </td>
        </tr>
        <tr>
            <td height="250"><tiles:insertAttribute name="menu" /></td>
            <td width="350"><tiles:insertAttribute name="body" /></td>
        </tr>
        <tr>
            <td height="30" colspan="2"><tiles:insertAttribute name="footer" />
            </td>
        </tr>
    </table>
    </body>
    </html>
    

    I am not able to understand what is wrong here. Why the css do not get populated.

  • Venkatesh 23 March, 2013, 12:35

    Great explanation. Thanks a lot.

  • vijay 20 April, 2013, 23:41

    dear Viral,

    i setup your sample code in work space but i am getting blank title page only…..
    i did not changed anything in your sample code.

  • Miguel Avila 3 May, 2013, 19:23

    Thanks! very simple and Quickly to implement, I’m using NetBeans,Spring 3 and propierties and work without problems. Thank you!

Leave a Reply

Your email address will not be published. Required fields are marked *

Note

To post source code in comment, use [code language] [/code] tag, for example:

  • [code java] Java source code here [/code]
  • [code html] HTML here [/code]