В целом, я бы порекомендовал SiteMesh поверх плиток.
Вот как настроить SiteMesh 3
Вы можете использовать плитки для шаблонов на странице, но используйте 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
для тела, и использовать свойство сообщения 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