【问题标题】:Attribute "inherit" must be declared for element type "put-list-attribute"必须为元素类型“put-list-attribute”声明属性“inherit”
【发布时间】:2015-03-15 06:15:38
【问题描述】:

我正在使用带有 Spring MVC 的 Apache tile 3.0.5。但是,当我尝试使用“put-attribute”包含一些特定于页面的 JS/CSS 时,我会收到错误消息:

必须为元素类型“put-list-attribute”声明属性“inherit”。

下面是我的 tile.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>

    <!-- Default Main Template -->
    <definition name="mainTemplate" template="/WEB-INF/tiles/template.jsp">
        <put-attribute name="title" value="Simple Tiles 2 Example" type="string" />
        <put-attribute name="header" value="/WEB-INF/tiles/header.jsp" />
        <put-attribute name="navigation" value="/WEB-INF/tiles/nav.jsp" />
        <put-attribute name="body" value="/WEB-INF/tiles/blank.jsp" />
        <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" />
        <put-list-attribute name="javascripts">
	        <add-attribute value="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js" />
	        <add-attribute value="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js" />
	        <add-attribute value="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.0/js/bootstrap-datepicker.min.js" />
	    </put-list-attribute>
	    <put-list-attribute name="stylesheets">
	        <add-attribute value="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" />
	        <add-attribute value="/resources/css/business-casual.css" />
	        <add-attribute value="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.0/css/bootstrap-datepicker.min.css" />
	    </put-list-attribute>
    </definition>
 
 	<!-- Default Main Template -->
    <definition name="dataEntryTemplate" template="/WEB-INF/tiles/data-entry-template.jsp">
        <put-attribute name="body" value="/WEB-INF/tiles/blank.jsp" />
    </definition>
 
    <definition name="home" extends="mainTemplate">
    	<put-attribute name="title" value="Home" type="string" />
        <put-attribute name="body" value="/WEB-INF/views/index.jsp" />
    </definition>

    <definition name="manage-student" extends="mainTemplate">
    	<put-attribute name="title" value="Manage Student" type="string" />
        <put-attribute name="body" value="/WEB-INF/views/manage-student.jsp" />
        <put-list-attribute name="javascripts" cascade="true" inherit="true">
	        <add-attribute value="/static/stylesheets/sign-in.js" />
	    </put-list-attribute>
    </definition>
</tiles-definitions>

【问题讨论】:

    标签: java spring apache tiles


    【解决方案1】:

    你能为你的第一个 put-list-attribute 标签添加元素 inherit="true"

    <put-list-attribute name="javascripts" inherit="true">
    

    希望这能解决您的问题。

    【讨论】:

    • 我已经添加了。你可以在我上面的设置文件中看到。
    • 刚刚成功,但在 mainTemplate 定义中,您现在有 2 个 put-list-attribute 标签。可能是某些 js 或样式表试图从默认库继承并要求您添加 inherit=true。你可以试一次吗
    • 我在扩展模板定义中添加了 inherit=true 并且它抛出了编译错误。此外,如果我尝试添加inherit="true"( ) 在主模板定义中,则会出现相同的错误。
    【解决方案2】:

    刚刚遇到同样的问题

    这是因为 DTD,在我们的例子中是用于 tile 2(从一些教程中复制),但我们安装了 Tiles 3。

    用这个替换 DTD:

    <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
    

    【讨论】:

      猜你喜欢
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      相关资源
      最近更新 更多