我有一个使用 Spring 3、Apache Tiles 2 和 Maven 的项目设置。 在我实现 Tiles 之前,我使用 messages.properties 文件来动态填充网页的标题(出现在 head 和 title 标签之间的部分)。这样做的原因是为了将来允许本地化。但是,由于我已经集成了磁贴,所以 tiles.xml 文件似乎控制着我页面的标题。
有没有办法改变这一点,所以页面标题来 self 用作页面正文的每个 jsp 的 messages.properties?
tiles.xml 是:
<definition name="base.definition" template="/WEB-INF/views/layouts/layout.jsp">
<put-attribute name="title" value="" />
<put-attribute name="header" value="/WEB-INF/views/includes/header.jsp" />
<put-attribute name="menu" value="/WEB-INF/views/includes/menu.jsp" />
<put-attribute name="body" value="" />
<put-attribute name="footer" value="/WEB-INF/views/includes/footer.jsp" />
</definition>
<definition name="home" extends="base.definition">
<put-attribute name="title" value="Welcome from Tile" />
<put-attribute name="body" value="/WEB-INF/views/home.jsp" />
</definition>
<definition name="new-deal-input" extends="base.definition">
<put-attribute name="title" value="New Deal" />
<put-attribute name="body" value="/WEB-INF/views/new-deal-input.jsp" />
</definition>
如果您看到“Welcome from Tile”或“New Deal”作为标题,我宁愿这条消息来自 messages.properties。我尝试将消息放在“正文”页面的标题标签中,但无济于事。
项目在 GitHub 上搭建,你可以看看这个 URL:Group-Deal-Clone
最佳答案
另一个变体,没有 c:set:
在tiles-defs.xml中:
<definition name="index" template="/WEB-INF/tiles/base.jsp">
<put-attribute name="title" value="home.title"/>
<put-attribute name="header" value="/WEB-INF/includes/iheader.jsp"/>
...
</definition>
在 base.jsp 中:
<head>
<tiles:importAttribute name="title" />
<title><spring:message code="${title}"></spring:message></title>
</head>
在messages.properties中:
home.title=Homepage title
关于java - SpringMVC 3 和 Tiles 2 页面标题的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6937810/