Лучшая альтернатива Apache Tiles - PullRequest
17 голосов
/ 17 марта 2012

Я ищу среду, которая лучше и проще в использовании, чем Apache Tiles (которую я использовал пару раз).

С Tiles кажется, что когда у меня 100Действия, необходимые для создания 100 файлов JSP и создания 100 определений в tiles.xml.

Есть ли лучшая структура для управления моими шаблонами?Я хочу создать, например, 2 шаблона:

а) меню и столбец для содержимого
б) меню, столбец для содержимого, правый столбец с баннером

В обоих шаблонах менюпостоянно.В template b правый столбец является константой, поэтому отличается только столбец содержимого.В этом простом примере я не хочу определять каждый файл JSP, который расширяет template a (просто для предоставления тела).Это хромое ИМО.Или, может быть, я хром, и я могу определить шаблон DEFAULT в Apache Tiles, и я просто не правильно его использую.В любом случае, вся помощь приветствуется.

Ответы [ 5 ]

15 голосов
/ 25 июня 2014

В целом, я бы порекомендовал SiteMesh поверх плиток.

Вот как настроить SiteMesh 3

Вы можете использовать плитки для шаблонов на странице, но используйте SiteMesh для общесайтовых шаблонов. Тем не менее ...

Как заставить Плитку меньше сосать:

  1. Использовать соглашение поверх конфигурации. Например, поместите ваши определения в webapp/WEB-INF/tiles.xml, и нет необходимости сообщать плиткам, где они находятся.

  2. Использовать подстановочные знаки:

<definition name="default" template="/WEB-INF/templates/default.jsp">
    <put-attribute name="titleKey" value=""/>
    <put-attribute name="body" value=""/>
</definition>

<definition name="*" extends="default">
    <put-attribute name="titleKey" value="{1}.title"/>
    <put-attribute name="body" value="/WEB-INF/views/{1}.jsp" />
</definition>

Если ваш контроллер возвращает имя представления index, оно будет соответствовать определению *, и использовать файл JSP /WEB-INF/views/index.jsp для тела, и использовать свойство сообщения index.title.

Если ваш контроллер возвращает имя представления contact-us, оно будет соответствовать определению *, и использовать файл JSP /WEB-INF/views/contact-us.jsp для тела, и использовать свойство сообщения contact-us.title

В вашем шаблоне добавьте:

<c:set var="titleKey"><tiles:getAsString name="titleKey" /></c:set>

и

<title><spring:message code="${titleKey}"/></title>

Добавьте компонент ReloadableResourceBundleMessageSource в контекст приложения сервлета.

Создайте файл /src/main/resources/messages.properties, с содержанием вроде:

index.title = Welcome to Acme, Inc.
contact-us.title = Contact Us
7 голосов
/ 28 мая 2013

(похоже на это )

Вам не нужно определение для каждого действия.

Эта стандартная конфигурация зависает от тайлов - 1 день. На самом деле это не нужно для плиток-2, когда были представлены шаблоны, особенно для плиток-3 вместе с OptionsRenderer.

Вот учебник , который поможет вам с

  • интеграция пружин в плитки,
  • определения с подстановочными знаками,
  • реализация резервного шаблона с использованием OptionsRenderer и
  • определения состава.
7 голосов
/ 17 марта 2012

Другой подход - Sitemesh .Он был спроектирован для создания сетчатых представлений, в которых нельзя изменить исходный текст, поэтому он представляет собой скорее структуру преобразования / декорирования html, чем шаблонную структуру, такую ​​как Tiles.

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

@ См .: Этот старыйВведение показывает, как работает SiteMesh.

5 голосов
/ 23 марта 2012

В итоге я использовал JSF + Facelets.Я объединил их с Spring MVC, и это работает как шарм.

0 голосов
/ 06 ноября 2012

Исходя из опыта, я настоятельно рекомендовал Apache Wicket.

...