put-attribute标记中的cascade属性出现Tiles2错误

时间:2010-10-28 13:59:59

标签: struts2 tiles2

我只是不知道为什么会收到此错误:

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属性。

3 个答案:

答案 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中拥有的属性。