在Spring + Tiles2应用程序中设置HTML头部标题的最佳方法?

时间:2009-05-18 07:03:35

标签: spring layout usability tiles2

我的Spring webapp中存在可用性问题,它使用Tiles作为视图技术。 目前,所有网页都显示相同的HEAD_TITLEPAGE_TITLE是特定于网页的:

 <html>
 <head><title>HEAD_TITLE</title></head>
 <body>
 <h1>PAGE_TITLE</h1>
 </body>
 </html>

这是一个主要的可用性问题,因为浏览器历史记录列出了具有相同标题的应用程序的所有不同页面。 HEAD_TITLE对所有网页都相同的原因是我找不到合理的方式将PAGE_TITLE用作HEAD_TITLE

在大多数情况下,PAGE_TITLE来自带有<fmt:message />标记的消息包 一些参数传递给它。 Tiles布局应该已经设置HEAD_TITLE,因为webapp的所有页面都使用相同的公共布局来定义页面的<HEAD>元素以及其他内容。

有关如何解决此可用性问题的任何建议吗?我应该在Spring控制器中为所有页面设置“pageTitle”请求属性,并将其用作PAGE_TITLE还是HEAD_TITLE?或者是否可以以某种方式在页面特定的JSP中设置HEAD_TITLE?

1 个答案:

答案 0 :(得分:1)

创建一般定义并定义headTitle和pageTitle属性。

<definition name="threeColumnLayout" template="/WEB-INF/ThreeColumnLayout.jsp" >
    <put-attribute name="headTitle" value="" />
    <put-attribute name="pageTitle" value="" />
    <put-attribute name="left" value="/WEB-INF/left.jsp" />
    <put-attribute name="middle" value="" />
    <put-attribute name="right" value="/WEB-INF/right.jsp" />
</definition>

在更具体的定义中设置适当的值。

<definition name="/user/new" extends="threeColumnLayout">
    <put-attribute name="headTitle" value="Administration" />
    <put-attribute name="pageTitle" value="Create User" />
    <put-attribute name="middle" value="WEB-INF/views/UserCreate.jsp" />
</definition>

使用<tiles:getAsString />标记在jsp页面中检索此类值。

<head>
    <title><tiles:getAsString name="headTitle"/></title>
</head>
<body>
    <h1>
        <title><tiles:getAsString name="pageTitle"/></title>
    </h1>
</body>

参考: - http://tiles.apache.org/framework/tiles-jsp/tagreference.html#tiles:getAsString