3

我在使用 Tiles 作为视图技术的 Spring webapp 中存在可用性问题。目前所有页面都显示相同HEAD_TITLE,并且PAGE_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”请求属性并将其用作 thePAGE_TITLEHEAD_TITLE? 或者是否有可能以某种方式在页面特定的 JSP 中设置 HEAD_TITLE?

4

1 回答 1

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

于 2010-11-22T20:23:25.830 回答