2009-05-12 5 views
1

Je trouve ceci: http://tiles.apache.org/framework/tutorial/advanced/nesting-extending.htmlTiles Nesting Apache modèle

est l'exemple ici:

<definition name="myapp.homepage" template="/layouts/classic.jsp"> 
    <put-attribute name="title" value="Tiles tutorial homepage" /> 
    <put-attribute name="header" value="/tiles/banner.jsp" /> 
    <put-attribute name="menu" value="/tiles/common_menu.jsp" /> 
    <put-attribute name="body"> 
    <definition template="/layouts/three_rows.jsp"> 
     <put-attribute name="one" value="/tiles/headlines.jsp" /> 
     <put-attribute name="two" value="/tiles/topics.jsp" /> 
     <put-attribute name="one" value="/tiles/comments.jsp" /> 
    </definition> 
    </put-attribute> 
    <put-attribute name="footer" value="/tiles/credits.jsp" /> 
</definition> 

Je Selon cette définition:

<definition name="mgmt.base.layout" extends="base.layout"> 
    <put-attribute name="body"> 
     <definition template="/WEB-INF/mgmt/config/mgmtBody.jsp"/> 
      <put-attribute name="adminLeft" value="/WEB-INF/mgmt/config/left.jsp"/> 
      <put-attribute name="adminRight" value="/tiles/blank.html"/> 
     </definition> 
    </put-attribute> 
</definition> 

Mais le plus drôle est que, même leur sa propre documentation est erronée:

2009-05-12 11:20:56, 088 [principal] ERREUR - org.apache.commons.digester.Digester.error (Digester.java:1635): Erreur d'analyse à la ligne 17 colonne 68: L'attribut "nom" est requis et doit être spécifié pour le type d'élément "définition". org.xml.sax.SAXParseException: l'attribut "name" est requis et doit être spécifié pour le type d'élément "definition".

Même si je un nom à lui, il donne toujours l'erreur suivante:

2009-05-12 11: 35: 31818 [principal] ERREUR - org.apache.commons.digester.Digester .error (Digester.java:1635): Erreur d'analyse à la ligne 21, colonne 19: Le contenu du type d'élément "put-attribute" doit correspondre à "null". org.xml.sax.SAXParseException: Le contenu du type d'élément "put-attribute" doit correspondre à "null".

Qu'est-ce que cela signifie? !!!!

Répondre

2

Le schéma que vous utilisez requiert que l'attribut put soit un noeud feuille, c'est-à-dire qu'il ne puisse pas contenir d'éléments enfants. Vous ne pouvez donc pas le faire. Découvrez si une version plus récente du schéma (doit être dans des documents ou des exemples Tiles) permet des modèles de carreaux imbriqués.

-Kalle

Donc, fondamentalement, je me sers d'une ancienne version de tuiles et en utilisant un nouveau schéma version: Voici la syntaxe pour le schéma imbriqué ancien: http://tiles.apache.org/2.0/framework/tutorial/advanced/nesting-extending.html

5

Changer la version DTD à 2.1 résolu mon problème!