Я использую Apache tile 3.0.5 с Spring MVC. Но, когда я пытаюсь включить JS/CSS с конкретными страницами, используя "put-attribute", я получаю сообщение об ошибке:
Атрибут "inherit" должен быть объявлен для типа элемента "put-list-attribute".
Ниже мой файл 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="/jquery.min.js" />
<add-attribute value="/bootstrap.min.js" />
<add-attribute value="/bootstrap-datepicker.min.js" />
</put-list-attribute>
<put-list-attribute name="stylesheets">
<add-attribute value="/bootstrap.min.css" />
<add-attribute value="/business-casual.css" />
<add-attribute value="/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="/sign-in.js" />
</put-list-attribute>
</definition>
</tiles-definitions>
Просто такая же проблема
это из-за DTD, который в нашем случае был для плит 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">
Можете ли вы добавить элемент inherit = "true" для вашего первого тэга put-list-attribute
т.е.
<put-list-attribute name="javascripts" inherit="true">
Надеюсь, это решит вашу проблему.