Вложенный шаблон плиток Apache - PullRequest
1 голос
/ 12 мая 2009

Итак, я нашел это: 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-attribute" должен соответствовать "null". org.xml.sax.SAXParseException: содержимое типа элемента "put-attribute" должно соответствовать "null".

Что это значит? !!!!

Ответы [ 2 ]

5 голосов
/ 19 января 2011

Изменение версии DTD до 2.1 решило мою проблему!

2 голосов
/ 13 мая 2009

Используемая схема требует, чтобы атрибут put являлся листовым узлом, т. Е. Не мог содержать дочерние элементы, поэтому вы не можете этого сделать. Узнайте, допускает ли более новая версия схемы (должна быть в документах или примерах Tiles) вложенные шаблоны листов.

-Kalle

Так что в основном я использую старую версию плиток и использую схему новой версии: Вот синтаксис для старой вложенной схемы: http://tiles.apache.org/2.0/framework/tutorial/advanced/nesting-extending.html

...