Apache Tiles: абстрактное определение, расширяющее другое абстрактное определение - PullRequest
0 голосов
/ 30 ноября 2011

Я использую Tiles 2.2, и я хотел бы повторно использовать один JSP для отображения разных сообщений. Сообщения должны быть определены в файле конфигурации Tiles.

Следующий пример - мой подход: base - это базовое абстрактное определение, которое расширяют все остальные определения, тогда как display будет другим абстрактным определением, используемым как шаблон для отображения сообщений. page1 и page2 - два последних примера страниц, каждый из которых отображает свое сообщение.

<definition name="base" template="layout.jspx"/>

<definition name="display" extends="base">
        <put-attribute name="body" value="display.jspx"/>
</definition>

<definition name="page1" extends="display">
        <put-attribute name="message" value="This is one message!"/>
</definition>

<definition name="page2" extends="display">
        <put-attribute name="message" value="This is another message!"/>
</definition>

display.jspx будет иметь что-то вроде этого внутри:

<tiles:useAttribute name="message"/>
Message: ${message}

Но я не смог заставить его работать, потому что при открытии page1 или page2 я получаю исключение, сообщающее, что атрибут сообщения имеет значение null.

Есть ли простой способ настроить что-то вроде этого, без изменения базового шаблона и определения ?

Заранее спасибо

1 Ответ

1 голос
/ 19 сентября 2012

Возможно, слишком поздно, но я считаю, что вам нужно добавить cascade="true" к вашим put-attribute элементам для name="message".

...