我只是不知道为什么会收到此错误:
2010-10-28 16:32:29,925 ERROR [ache.commons.digester.Digester.error :1635] - Parse Error at line 45 column 56: Attribute "cascade" must be declared for element type "put-attribute".
org.xml.sax.SAXParseException: Attribute "cascade" must be declared for element type "put-attribute".
tiles.xml看起来像这样(只有相关部分):
<tiles-definitions>
<definition name="customerBaseLayout" template="/pages/customer/templates/baseLayout.jsp">
<put-attribute name="title" value="Pannello Operatore"/>
<put-attribute name="header" value="/pages/customer/templates/header.jsp"/>
<put-attribute name="footer" value="/pages/customer/templates/footer.jsp"/>
</definition>
<definition name="userBaseLayout" extends="customerBaseLayout">
<put-attribute name="header" value="/pages/guest/templates/user/header.jsp"/>
<put-attribute name="sidebar" cascade="true" />
</definition>
我确实尝试过设置值属性,但没有用。我在文档here
中找到了级联attr我正在使用带有struts 2.1和tiles 2.0.6的netBeans 6.9。ide不知道代码提示中的cascade属性。
答案 0 :(得分:10)
你正在使用Tiles 2.0.6,但“cascade”仅在2.1 DTD中。
答案 1 :(得分:7)
这里的问题相同。我将dtd定位指定为http://tiles.apache.org/dtds/tiles-config_2_1.dtd。我的IDE正确识别它并允许cascade属性。但是一旦运行,就会显示相同的错误消息。
答案 2 :(得分:0)
我认为问题的出现是因为您扩展了tile customerBaseLayout并且tile不知道您是否要将默认值用作此定义的值。例如,您已经设置了title属性,但是由于您没有设置cascade =“true”,因此它在userBaseLayout中不可用。将customerBaseLayout cascade =“true”添加到您希望在userBaseLayout中拥有的属性。