总的来说,我会推荐SiteMesh而不是Tiles。
以下是设置 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>
如果您的控制器返回视图名称,它将与定义匹配,并使用 JSP 文件作为正文,并使用 message 属性 。index
*
/WEB-INF/views/index.jsp
index.title
如果您的控制器返回视图名称,它将与定义匹配,并使用 JSP 文件作为正文,并使用 message 属性contact-us
*
/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>
将 Bean 添加到您的 servlet 应用程序上下文中。ReloadableResourceBundleMessageSource
创建一个文件,其中包含以下内容:/src/main/resources/messages.properties
index.title = Welcome to Acme, Inc.
contact-us.title = Contact Us