The following is the tiles definition, template jsp the results in the
included 500 error. I am trying to define an attribute list of css links in
the base tiles definition and allow sub definitions to to append additional
links to the list as needed. I read the documentation, but i still do not
see the issue with my configuration.


tiles definition xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!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="master.template"
        template="/WEB-INF/tiles/templates/template.jsp">
        <put-attribute name="title" value="" />
        <put-attribute name="header"
value="/WEB-INF/tiles/templates/header.jsp" />
        <put-attribute name="menu"
value="/WEB-INF/tiles/templates/menu.jsp" />
        <put-attribute name="body"
value="/WEB-INF/views/home.jsp" />
        <put-attribute name="footer"
value="/WEB-INF/tiles/templates/footer.jsp" />
        <put-list-attribute name="links"
inherit="true" cascade="true">
            <add-attribute type="string"
value="/stles/default.css" />
            <add-attribute type="string"
value="/styles/another.css" />
          </put-list-attribute>
    </definition>
    <definition name="home"
extends="master.template">
        <put-attribute name="title" value="Welcome
Home" />
        <put-attribute name="body"
value="/WEB-INF/views/home.jsp" />
    </definition>
    <definition name="about"
extends="master.template">
        <put-attribute name="title" value="About"
/>
        <put-attribute name="body"
value="/WEB-INF/views/about.jsp" />
    </definition>
</tiles-definitions>



********* template.jsp ************
<%@ taglib prefix="tiles" uri="
http://tiles.apache.org/tags-tiles"%>
<%@ taglib prefix="c" uri="
http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="
http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>

        <title><tiles:insertAttribute name="title"
ignore="true" /></title>

        <!-- links -->
        <tiles:useAttribute name="links"/>
        <c:forEach var="href" items="${items}">
        <link type="text/css" rel="stylesheet"
href="${href}" />
        </c:forEach>

    </head>
    <body>
        <div id="page">
            <div id="header"><tiles:insertAttribute
name="header" /></div>
            <div id="menu"><tiles:insertAttribute
name="menu" /></div>
            <div id="body"><tiles:insertAttribute
name="body" /></div>
            <div id="footer"><tiles:insertAttribute
name="footer" /></div>
        </div>
    </body>
</html>



HTTP ERROR 500

Problem accessing /. Reason:

    ServletException including path
'/WEB-INF/tiles/templates/template.jsp'.

Caused by:

org.apache.tiles.impl.CannotRenderException: ServletException including path
'/WEB-INF/tiles/templates/template.jsp'.



    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:692)
    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644)
    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627)



    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)
    at
org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124)
    at
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)



    at
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1031)
    at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:815)
    at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)



    at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)



    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)



    at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)



    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)



    at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)



    at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)



    at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at
com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)



    at org.mortbay.jetty.Server.handle(Server.java:326)
    at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)



    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)



    at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: org.apache.tiles.util.TilesIOException: ServletException
including path '/WEB-INF/tiles/templates/template.jsp'.


    at
org.apache.tiles.servlet.context.ServletUtil.wrapServletException(ServletUtil.java:241)

    at
org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:243)
    at
org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222)



    at
org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
    at
org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)


    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)

    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690)
    ... 37 more
Caused by: org.apache.tiles.template.NoSuchAttributeException: Error
importing attributes. Attribute 'links' is null



    at
org.apache.tiles.template.ImportAttributeModel.importSingleAttribute(ImportAttributeModel.java:133)
    at
org.apache.tiles.template.ImportAttributeModel.getImportedAttributes(ImportAttributeModel.java:78)
    at
org.apache.tiles.jsp.taglib.UseAttributeTag.doTag(UseAttributeTag.java:175)



    at
org.apache.jsp.WEB_002dINF.tiles.templates.template_jsp._jspService(template_jsp.java:110)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)



    at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)



    at
com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23)
    at
com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59)
    at java.security.AccessController.doPrivileged(Native Method)



    at
com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)



    at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
    at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)



    at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)



    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
    at
org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)



    ... 42 more

Caused by:

org.apache.tiles.util.TilesIOException: ServletException including path
'/WEB-INF/tiles/templates/template.jsp'.
    at
org.apache.tiles.servlet.context.ServletUtil.wrapServletException(ServletUtil.java:241)



    at
org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:243)
    at
org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222)



    at
org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
    at
org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)


    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)

    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690)
    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644)
    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627)



    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)
    at
org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124)
    at
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)



    at
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1031)
    at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:815)
    at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)



    at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)



    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)



    at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)



    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)



    at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)



    at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)



    at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at
com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)



    at org.mortbay.jetty.Server.handle(Server.java:326)
    at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)



    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)



    at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: org.apache.tiles.template.NoSuchAttributeException: Error
importing attributes. Attribute 'links' is null
    at
org.apache.tiles.template.ImportAttributeModel.importSingleAttribute(ImportAttributeModel.java:133)



    at
org.apache.tiles.template.ImportAttributeModel.getImportedAttributes(ImportAttributeModel.java:78)
    at
org.apache.tiles.jsp.taglib.UseAttributeTag.doTag(UseAttributeTag.java:175)
    at
org.apache.jsp.WEB_002dINF.tiles.templates.template_jsp._jspService(template_jsp.java:110)



    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)



    at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at
com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23)



    at
com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59)
    at java.security.AccessController.doPrivileged(Native Method)
    at
com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57)



    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)



    at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)



    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)



    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
    at
org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)
    ... 42 more

Caused by:

org.apache.tiles.template.NoSuchAttributeException: Error importing
attributes. Attribute 'links' is null
    at
org.apache.tiles.template.ImportAttributeModel.importSingleAttribute(ImportAttributeModel.java:133)



    at
org.apache.tiles.template.ImportAttributeModel.getImportedAttributes(ImportAttributeModel.java:78)
    at
org.apache.tiles.jsp.taglib.UseAttributeTag.doTag(UseAttributeTag.java:175)
    at
org.apache.jsp.WEB_002dINF.tiles.templates.template_jsp._jspService(template_jsp.java:110)



    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)



    at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at
com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23)



    at
com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59)
    at java.security.AccessController.doPrivileged(Native Method)
    at
com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57)



    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)



    at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)



    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)



    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
    at
org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)
    at
org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222)



    at
org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
    at
org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)


    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)

    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690)
    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644)
    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627)



    at
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)
    at
org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124)
    at
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)



    at
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1031)
    at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:815)
    at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)



    at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)



    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)



    at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)



    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)



    at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)



    at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)



    at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at
com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)



    at org.mortbay.jetty.Server.handle(Server.java:326)
    at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)



    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)



    at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

Reply via email to