Как изменить порядок оценки листов в Apache Tiles? - PullRequest
0 голосов
/ 20 ноября 2010

У меня проблема с тем, что вложенные шаблоны оцениваются перед родительским шаблоном.Из-за проблемы с упорядочением это вызывает проблемы с библиотекой тегов, которая настаивает на вложенности.Страница content.jsp оценивается, выводится следующее.

evaluating content.jsp
evaluating template.jsp

Страница content.jsp не работает, поскольку тег inner должен находиться внутри тега outer.Как заставить Tiles оценить content.jsp после того, как он оценил template.jsp?

1 Ответ

1 голос
/ 20 ноября 2010

Я могу ошибаться, но я думаю, что Tiles нужно проанализировать весь JSP, а это значит, что вы не можете сделать это так, как это запланировано. Текущий макет исходит из целевой JSP, которая затем использует шаблон для внутреннего использования. Мы можем использовать определения плиток, чтобы указать шаблон в качестве целевого заполнения содержимого. Я думаю, что этот метод позволит вам более эффективно использовать наследование плиток и может решить эту проблему, потому что «шаблон» будет отображаться первым, а не вторым.

Пример: tiles.xml

<tiles-definitions>
    <definition name="myTemplate" template="/WEB-INF/jsf/template.jsp">
         <put-attribute name="content" value="" />
    </definition>
    <definition name="content" extends="myTemplate">
         <put-attribute name="content" value="content.jsp" />
    </definition>
</tiles-definitions>

Теперь вы должны указать определение тайлов как тип результата ... Если вы используете Struts2, я бы сказал вам, но есть вероятность, что со всеми фреймворками у вас нет.

Ваш шаблон JSP будет выглядеть так же. и ваш контент JSP будет переписан что-то вроде:

<%@taglib uri="http://taglibs.com/tags" prefix="s"%>
<%System.out.println("evaluating content.jsp");%>
<s:inner />

Обратите внимание, что теперь не нужно смешивать логику тайлов на странице. Содержание просто так. Вы заметите, что файл tile.xml является более сложным, чем мне действительно нужно, но я хотел показать, что в нашем примере у нас есть только один атрибут put, но на более сложных страницах их может быть много, поэтому myTemplate выдаст страница содержит не только контент, но и верхний и нижний колонтитулы и боковые панели, возможно, даже верхние колонтитулы, поэтому вы можете изменить скрипты и CSS на странице, а затем просто расширить его, как в приведенном примере, а затем изменить только те фрагменты, которые вам нужны (обычно это только содержимое), далее вы можете расширить это определение ... Базовая компоновка -> Безопасная компоновка расширяет базу, но, возможно, изменяет заголовок, добавляя значок блокировки -> View_users_in_secure_layout расширяет безопасную компоновку, изменяя содержимое для функции просмотра пользователей.

...