You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "Tuan H. Le" <tu...@phsadc.com> on 2002/09/27 21:25:21 UTC

"tiles-definitions" is incomplete

Hi,

I just found this error in tomcat log, and I couldn't figure out the reason for causing this error when I don't use struts-tiles tag. Though, I didn't see this error before. I must have modified the web.xml file. Here is the error message with the web.xml file

Please advise on troubleshooting this error.

Thanks in advance for your help!
Tuan

org.xml.sax.SAXParseException: The content of element type "tiles-definitions" is incomplete, it must match "(definition)+".
	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:232)
	at org.apache.xerces.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:173)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:362)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:296)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1953)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:878)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElement(XMLDocumentFragmentScannerImpl.java:1144)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:987)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1445)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:333)
	at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:524)
	at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:580)
	at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
	at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1169)
	at org.apache.commons.digester.Digester.parse(Digester.java:1514)
	at org.apache.struts.tiles.xmlDefinition.XmlParser.parse(XmlParser.java:341)
	at org.apache.struts.tiles.xmlDefinition.I18nFactorySet.parseXmlFile(I18nFactorySet.java:529)
	at org.apache.struts.tiles.xmlDefinition.I18nFactorySet.parseXmlFiles(I18nFactorySet.java:466)
	at org.apache.struts.tiles.xmlDefinition.I18nFactorySet.createDefaultFactory(I18nFactorySet.java:294)
	at org.apache.struts.tiles.xmlDefinition.I18nFactorySet.initFactory(I18nFactorySet.java:267)
	at org.apache.struts.tiles.xmlDefinition.I18nFactorySet.initFactory(I18nFactorySet.java:215)
	at org.apache.struts.tiles.definition.ComponentDefinitionsFactoryWrapper.init(ComponentDefinitionsFactoryWrapper.java:69)
	at org.apache.struts.tiles.DefinitionsUtil.createDefinitionsFactory(DefinitionsUtil.java:276)
	at org.apache.struts.tiles.TilesPlugin.init(TilesPlugin.java:147)
	at org.apache.struts.action.ActionServlet.initApplicationPlugIns(ActionServlet.java:991)
	at org.apache.struts.action.ActionServlet.init(ActionServlet.java:458)
	at javax.servlet.GenericServlet.init(GenericServlet.java:256)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:924)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:813)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3342)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:3534)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:821)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:579)
	at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:257)
	at org.apache.catalina.core.StandardHost.install(StandardHost.java:772)
	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:502)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:410)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:879)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:368)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1196)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
	at org.apache.catalina.core.StandardService.start(StandardService.java:497)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:2191)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:510)
	at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
	at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
[ERROR] Digester - -Parse Error at line 39 column 21: The content of element type "tiles-definitions" is incomplete, it must match "(definition)+". <org.xml.sax.SAXParseException: The content of element type "tiles-definitions" is incomplete, it must match "(definition)+".>



------ WEB-INF\web.xml -------

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>
      org.apache.struts.action.ActionServlet
    </servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>
        /WEB-INF/struts-config.xml
      </param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>5</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>validate</param-name>
      <param-value>true</param-value>
    </init-param>
    <init-param>
      <param-name>mapping</param-name>
      <param-value>
        com.phs.ezhr.domain.EZHRActionMapping
      </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <!-- The Welcome File List -->
  <welcome-file-list>
    <welcome-file>/Login.jsp</welcome-file>
  </welcome-file-list>
  <!-- Struts Tag Library Descriptor -->
  <taglib>
    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>
  <resource-ref>
    <description>
      Resource reference to a factory for java.sql.Connection instances that may be used for talking to a particular database that is configured in the server.xml file
    </description>
    <res-ref-name>jdbc/ezhr</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
</web-app>


Re: in inserted pages

Posted by Cedric Dumoulin <ce...@apache.org>.
  Hi Ralf,

  It is allowed to nest tiles in an application. However, tiles 
attributes are only visible from the tiles, not from its sub-tiles or 
from its parent. This behavior is the same as a method call: parameters 
are only visible in the method, not in its called methods.
  To solve your problem, you need to pass tiles attributes explicitly, 
as you would do in a method call:
<tile:insert attribute="body">
  <tiles:put name="subview" beanName="subview" beanScope="tiles" />
<tile:insert/>

  Hope this help,
         Cedric

Ralf E. Stranzenbach wrote:

>Hi,
>
>i've build a small application using Tiles and Struts which worked very
>well.
>
>The setup of all pages is described using the tiles-defs.xml file. For all
>those pages there is a single layout.jsp that contains the layout code and
>inserts all other views of the application.
>
>Last night i've extended the application and there was therequirement of a
>"body" view that sometimes inserts another view on its own.
>
>Therefore i expected to get the following situation
>
>somePage -> maps to body->details.jsp, subview->moredetails.jsp and
>layout.jsp
>  -- layout.jsp -> <tile:insert attribute="body">
>    -- body: details.jsp -> <tiles:insert attribute="subview">
>      -- subview: moredetail.jsp
>
>This is the behaviour i've expected an i want to have. But if i try to
><tiles:insert> in the details.jsp Tiles throws an "subview" attribute not
>found exception.
>
>Is it *NOT* allowed to nest Tiles in an application?
>
>Sincerley,
>	- Ralf
>
>
>
>--
>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>
>  
>



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


in inserted pages

Posted by "Ralf E. Stranzenbach" <mo...@reswi.de>.
Hi,

i've build a small application using Tiles and Struts which worked very
well.

The setup of all pages is described using the tiles-defs.xml file. For all
those pages there is a single layout.jsp that contains the layout code and
inserts all other views of the application.

Last night i've extended the application and there was therequirement of a
"body" view that sometimes inserts another view on its own.

Therefore i expected to get the following situation

somePage -> maps to body->details.jsp, subview->moredetails.jsp and
layout.jsp
  -- layout.jsp -> <tile:insert attribute="body">
    -- body: details.jsp -> <tiles:insert attribute="subview">
      -- subview: moredetail.jsp

This is the behaviour i've expected an i want to have. But if i try to
<tiles:insert> in the details.jsp Tiles throws an "subview" attribute not
found exception.

Is it *NOT* allowed to nest Tiles in an application?

Sincerley,
	- Ralf



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: "tiles-definitions" is incomplete

Posted by Cedric Dumoulin <ce...@apache.org>.
  You try to parse an uncomplete tiles xml configuration file. Maybe you 
have added a new war file like struts-blank.war in your application ? In 
Struts 1.1b2 and later, tiles are enable from struts-config.xml, with 
the appropriate tags.

   Hope this help,
         Cedric

Tuan H. Le wrote:

>Hi,
>
>I just found this error in tomcat log, and I couldn't figure out the reason for causing this error when I don't use struts-tiles tag. Though, I didn't see this error before. I must have modified the web.xml file. Here is the error message with the web.xml file
>
>Please advise on troubleshooting this error.
>
>Thanks in advance for your help!
>Tuan
>
>org.xml.sax.SAXParseException: The content of element type "tiles-definitions" is incomplete, it must match "(definition)+".
>	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:232)
>	at org.apache.xerces.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:173)
>	at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:362)
>	at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:296)
>	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1953)
>	at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:878)
>	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElement(XMLDocumentFragmentScannerImpl.java:1144)
>	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:987)
>	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1445)
>	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:333)
>	at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:524)
>	at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:580)
>	at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
>	at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1169)
>	at org.apache.commons.digester.Digester.parse(Digester.java:1514)
>	at org.apache.struts.tiles.xmlDefinition.XmlParser.parse(XmlParser.java:341)
>	at org.apache.struts.tiles.xmlDefinition.I18nFactorySet.parseXmlFile(I18nFactorySet.java:529)
>	at org.apache.struts.tiles.xmlDefinition.I18nFactorySet.parseXmlFiles(I18nFactorySet.java:466)
>	at org.apache.struts.tiles.xmlDefinition.I18nFactorySet.createDefaultFactory(I18nFactorySet.java:294)
>	at org.apache.struts.tiles.xmlDefinition.I18nFactorySet.initFactory(I18nFactorySet.java:267)
>	at org.apache.struts.tiles.xmlDefinition.I18nFactorySet.initFactory(I18nFactorySet.java:215)
>	at org.apache.struts.tiles.definition.ComponentDefinitionsFactoryWrapper.init(ComponentDefinitionsFactoryWrapper.java:69)
>	at org.apache.struts.tiles.DefinitionsUtil.createDefinitionsFactory(DefinitionsUtil.java:276)
>	at org.apache.struts.tiles.TilesPlugin.init(TilesPlugin.java:147)
>	at org.apache.struts.action.ActionServlet.initApplicationPlugIns(ActionServlet.java:991)
>	at org.apache.struts.action.ActionServlet.init(ActionServlet.java:458)
>	at javax.servlet.GenericServlet.init(GenericServlet.java:256)
>	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:924)
>	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:813)
>	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3342)
>	at org.apache.catalina.core.StandardContext.start(StandardContext.java:3534)
>	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:821)
>	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
>	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:579)
>	at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:257)
>	at org.apache.catalina.core.StandardHost.install(StandardHost.java:772)
>	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:502)
>	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:410)
>	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:879)
>	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:368)
>	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
>	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1196)
>	at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
>	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
>	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
>	at org.apache.catalina.core.StandardService.start(StandardService.java:497)
>	at org.apache.catalina.core.StandardServer.start(StandardServer.java:2191)
>	at org.apache.catalina.startup.Catalina.start(Catalina.java:510)
>	at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
>	at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
>	at java.lang.reflect.Method.invoke(Native Method)
>	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
>[ERROR] Digester - -Parse Error at line 39 column 21: The content of element type "tiles-definitions" is incomplete, it must match "(definition)+". <org.xml.sax.SAXParseException: The content of element type "tiles-definitions" is incomplete, it must match "(definition)+".>
>
>
>
>------ WEB-INF\web.xml -------
>
><?xml version="1.0" encoding="ISO-8859-1"?>
><!DOCTYPE web-app
>    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
>    "http://java.sun.com/dtd/web-app_2_3.dtd">
><web-app>
>  <servlet>
>    <servlet-name>action</servlet-name>
>    <servlet-class>
>      org.apache.struts.action.ActionServlet
>    </servlet-class>
>    <init-param>
>      <param-name>config</param-name>
>      <param-value>
>        /WEB-INF/struts-config.xml
>      </param-value>
>    </init-param>
>    <init-param>
>      <param-name>debug</param-name>
>      <param-value>5</param-value>
>    </init-param>
>    <init-param>
>      <param-name>detail</param-name>
>      <param-value>2</param-value>
>    </init-param>
>    <init-param>
>      <param-name>validate</param-name>
>      <param-value>true</param-value>
>    </init-param>
>    <init-param>
>      <param-name>mapping</param-name>
>      <param-value>
>        com.phs.ezhr.domain.EZHRActionMapping
>      </param-value>
>    </init-param>
>    <load-on-startup>1</load-on-startup>
>  </servlet>
>  <!-- Standard Action Servlet Mapping -->
>  <servlet-mapping>
>    <servlet-name>action</servlet-name>
>    <url-pattern>*.do</url-pattern>
>  </servlet-mapping>
>  <!-- The Welcome File List -->
>  <welcome-file-list>
>    <welcome-file>/Login.jsp</welcome-file>
>  </welcome-file-list>
>  <!-- Struts Tag Library Descriptor -->
>  <taglib>
>    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
>    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
>  </taglib>
>  <taglib>
>    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
>    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
>  </taglib>
>  <taglib>
>    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
>    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
>  </taglib>
>  <resource-ref>
>    <description>
>      Resource reference to a factory for java.sql.Connection instances that may be used for talking to a particular database that is configured in the server.xml file
>    </description>
>    <res-ref-name>jdbc/ezhr</res-ref-name>
>    <res-type>javax.sql.DataSource</res-type>
>    <res-auth>Container</res-auth>
>  </resource-ref>
></web-app>
>
>  
>
>------------------------------------------------------------------------
>
>--
>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
>



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>