Tiles 2 ( TilesContainer not initialized Exception )

NetPerformance

Erfahrenes Mitglied
Hallo,

Ich habe ein Problem mit dem folgenden Beispiel:
http://tiles.apache.org/tutorial/basic/pages.html

Folgende Libs habe ich verwendet.

- commons-beanutils-1.8.0.jar
- commons-logging-api-1.1.jar
- commons-digester-1.8.1.jar
- tiles-core-2.1.2.jar
- tiles-api-2.1.2.jar
- tiles-jsp-2.1.2.jar
- struts2-tiles-plugin-2.1.6.jar



Exception:
----------

Code:
08.02.2009 16:40:04 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception
org.apache.tiles.jsp.taglib.TilesJspException: TilesContainer not initialized
	at org.apache.tiles.jsp.taglib.RenderTag.doStartTag(RenderTag.java:213)
	at org.apache.jsp.index_jsp._jspx_meth_tiles_005finsertDefinition_005f0(index_jsp.java:106)
	at org.apache.jsp.index_jsp._jspService(index_jsp.java:66)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)



tiles-defs.xml
--------------
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">

<tiles-definitions>
	<definition name="welcome" template="/jsp/template.jsp">
		<put-attribute name="header" value="/jsp/header.jsp" />
		<put-attribute name="navigation" value="/jsp/navigation.jsp" />
		<put-attribute name="content" value="/jsp/content.jsp" />
		<put-attribute name="footer" value="/jsp/footer.jsp" />		
	</definition>
</tiles-definitions>




web.xml
-------

Code:
<servlet>
	<servlet-name>tiles</servlet-name>
	<servlet-class>org.apache.tiles.servlet.startup.TilesServlet</servlet-class>
	<init-param>
		<param-name>
			org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
		<param-value>/WEB-INF/tiles-defs.xml</param-value>
	</init-param>
	<load-on-startup>2</load-on-startup>
</servlet>




index.jsp
---------

Code:
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>

<%@ page import="org.apache.tiles.TilesContainer"%>
<%@ page import="org.apache.tiles.access.TilesAccess"%>

<tiles:insertDefinition name="welcome" />

<%
	/*
	try {
		TilesContainer container = TilesAccess.getContainer(request.getSession().getServletContext());
		container.render("welcome", request, response);
	} catch(Exception e) {
		e.printStackTrace();
	}
	*/
%>



template.jsp
------------

Code:
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>

<html>
    <head></head>    
    <body>
        <div><tiles:insertAttribute name="header" /></div>
        <div><tiles:insertAttribute name="navigation" /></div>
        <div><tiles:insertAttribute name="content" /></div>
        <div><tiles:insertAttribute name="footer" /></div>
    </body>
</html>



Habt ihr eine Idee, was ich falsch gemacht habe ?

Gruß
Aaron
 
Für Tiles 2.1 muss man das folgende Package verwenden:

Code:
<servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class>

Weiterhin wird tiles-servlet-2.1.2.jar benötigt.

Gruß
Aaron
 

Neue Beiträge

Zurück