2016-02-08 4 views
0

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

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

  • Украсить / и /login с 2 декораторы
  • Украсьте /welcome с 2 различными декораторов

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

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

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

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

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

ответ

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, и у нас также есть определенный декоратор для других страниц.