Лучшая альтернатива Apache Tiles - программирование
Подтвердить что ты не робот

Лучшая альтернатива Apache Tiles

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Как сделать плитки сосать меньше:

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

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

<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 для тела и использовать свойство message index.title.

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

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

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

и

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

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

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

index.title = Welcome to Acme, Inc.
contact-us.title = Contact Us

Ответ 3

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

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

@See: Эта старая версия показывает, как работает SiteMesh.

Ответ 4

(аналогично this)

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

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

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

  • spring для интеграции с плитами,
  • с подстановочными знаками,
  • реализация резервного шаблона с помощью OptionsRenderer и
  • .

Ответ 5

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