所以我找到了这个:http : //tiles.apache.org/framework/tutorial/advanced/nesting- extending.html
这是示例:
<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>
所以我定义了这个:
<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>
但是有趣的是,即使他们自己的文档也是错误的:
2009-05-12 11:20:56,088 [main]错误- org.apache.commons.digester.Digester.error(Digester.java:1635):第17行第68列的解析错误:属性“名称”是必需的,并且必须为元素类型“定义”指定。 org.xml.sax.SAXParseException:属性“名称”是必需的,必须为元素类型“定义”指定。
即使我为其定义了一个名称,它仍然会出现以下错误:
2009-05-12 11:35:31,818 [main]错误- org.apache.commons.digester.Digester.error(Digester.java:1635):第21行第19列的解析错误:元素类型“ put-属性”必须匹配“空”。 org.xml.sax.SAXParseException:元素类型“ put-attribute”的内容必须与“ null”匹配。
这是什么意思?!!!!
您使用的架构要求put-attribute是叶节点,即不能包含子元素- 因此您不能这样做。找出架构的较新版本(必须在Tiles文档或示例中)是否允许嵌套tile模板。
-卡尔
因此,基本上,我使用的是旧版磁贴并使用新版本架构:这是旧版嵌套架构的语法:http : //tiles.apache.org/2.0/framework/tutorial/advanced/nesting- extending.html