Apache Tiles: абстрактное определение, расширяющее другое абстрактное

Я использую 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.

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

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


person user683887    schedule 29.11.2011    source источник
comment
Прошло некоторое время с тех пор, как я использовал плитки. Кажется, я помню, что мне приходилось помещать type=string в атрибуты типа string.   -  person JB Nizet    schedule 30.11.2011


Ответы (1)


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

person Chris Goldman    schedule 18.09.2012