Включить часть плитки с Apache Tiles? - PullRequest
4 голосов
/ 08 июля 2011

Мне сложно с Tiles.

У меня есть веб-приложение с множеством представлений, все они составлены вокруг одного шаблона. В шаблоне имеется около трех или четырех «заполнителей», и для каждого представления разный динамически генерируемый контент должен быть помещен в правильный заполнитель.

Когда я определяю новое представление с Tiles, мне нужно создать несколько файлов JSP - каждый с содержимым заполнителя. Затем мне нужно обновить огромный XML-файл, в котором много записей, которые выглядят одинаково.

Я ищу решение, которое позволило бы мне объявить все содержимое этого заполнителя в одном и том же файле и частично включить этот файл в шаблон (каждый фрагмент к своему заполнителю).

Я также смотрел на Velocity и FreeMarker, но ни один из них, похоже, не имеет функции частичного включения.

Какие у меня есть варианты? Я готов рассмотреть вопрос об изменении фреймворка, чтобы сделать его немного менее утомительным для создания еще одного представления.

Спасибо!

1 Ответ

0 голосов
/ 29 мая 2015

Я полагаю, что причина вашего огромного XML-файла в том, что вы, возможно, не расширили шаблон по умолчанию следующим образом

Это должен быть ваш базовый шаблон:

<definition name="app.base" template="/WEB-INF/templates/default.jsp">
   <put-attribute name="title" value="Not Found" />
   <put-attribute name="header" value="/WEB-INF/tiles/header.jsp" />
   <put-attribute name="body" value="/WEB-INF/tiles/body.jsp" />
   <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" />
   <put-list-attribute name="stylesheets">
        <add-attribute value="/static/public/css/bootstrap.min.css" />          
        <add-attribute value="/static/protected/css/header.css" />
        <add-attribute value="/static/protected/css/footer.css" />
   </put-list-attribute>
   <put-list-attribute name="javascripts">
        <add-attribute value="/static/public/js/jquery-2.1.4.min.js" />
        <add-attribute value="/static/public/js/bootstrap.js" />
   </put-list-attribute>    
</definition>

Теперь, когда выесть базовый шаблон, который вы можете РАСШИРИТЬ следующим образом:

<definition name="home" extends="app.base">
   <put-attribute name="title" value="Home Page" />
   <put-attribute name="body" value="/WEB-INF/tiles/home.jsp" />
   <put-list-attribute name="stylesheets" inherit="true">
       <add-attribute value="/static/protected/css/whatever.css" />
   </put-list-attribute>
</definition>

Эта новая страница будет включать в себя как таблицы стилей CSS, так и домашнюю страницу

Это поможет?

...