Сопоставление сетки сайта с несколькими декораторами не будет работать должным образом

Я пытаюсь украсить страницу несколькими декораторами, используя сетку сайта 3. Проблема возникает, когда я добавляю больше страниц, некоторые страницы украшаются другим декоратором, что приводит к неправильному оформлению страницы.

Вот что я пытаюсь сделать:

  • Украсьте / и /login двумя декораторами.
  • Украсьте /welcome двумя разными декораторами.

Пока sitemesh3.xml выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
    <mapping>
        <path>/</path>
        <decorator>/decorator1.jsp</decorator>
        <decorator>/decorator1-2.jsp</decorator>
    </mapping>
    <mapping>
        <path>/login</path>
        <decorator>/decorator1.jsp</decorator>
        <decorator>/decorator1-2.jsp</decorator>
    </mapping>
    <mapping>
        <path>/welcome</path>
        <decorator>/decorator2.jsp</decorator>
        <decorator>/decorator2-2.jsp</decorator>
    </mapping>
</sitemesh>

Проблема в том, что /welcome украшают decorator1 и decorator1-2

Может кто-нибудь объяснить, что я пропустил здесь?

Кстати, могу ли я использовать несколько <path> внутри сопоставления для сопоставления нескольких местоположений с одним или несколькими декораторами, или каждый путь должен быть объявлен отдельно.

Я знаю, что могу использовать /* для сопоставления всех страниц, но что, если я хочу что-то вроде:

<mapping>
    <path>/admin/*</path>
    <path>/manage/*</path>
    <path>/secured/admin/*</path>
    <decorator>decorator.jsp</decorator>
</mapping>

person Milos Miskone Sretin    schedule 08.02.2016    source источник


Ответы (1)


На второй вопрос ответ ДА. Вы можете добавить несколько <path> в <mapping>, все пути будут украшены.
Возвращаясь к вашему первому вопросу, если вы украсите / или /* некоторыми декораторами, они будут применены ко всей странице. Это означает, что если вы хотите специально украсить страницы, НЕ используйте / или /*. Ниже приведены конфигурации из моего текущего проекта.

<mapping path="/*" decorator="/WEB-INF/decorators/menu.ftl"/>

<mapping>
    <path >/catalog/*</path>
    <path >/attribute/*</path>
    <decorator>/WEB-INF/decorators/product_menu.ftl</decorator>
    <decorator>/WEB-INF/decorators/menu.ftl</decorator>
</mapping>

<mapping>
    <path >/member/comment*</path>
    <decorator>/WEB-INF/decorators/comment_menu.ftl</decorator>
    <decorator>/WEB-INF/decorators/menu.ftl</decorator>
</mapping>

Как видите, все страницы оформлены с помощью menu.ftl, а также у нас есть какой-то определенный декоратор для других страниц.

person BurnetZhong    schedule 31.03.2016