Лучший способ установить заголовок HTML-заголовка в приложении Spring + Tiles2? - PullRequest
2 голосов
/ 18 мая 2009

У меня проблема с удобством использования в моем веб-приложении Spring, в котором в качестве технологии просмотра используется Tiles. На данный момент все страницы отображают одинаковые 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 должен быть уже установлен в этой точке, поскольку все страницы веб-приложения используют одинаковую общую компоновку, которая определяет элементы <HEAD> страниц среди прочего.

Есть предложения, как решить эту проблему с юзабилити? Должен ли я установить атрибут запроса "pageTitle" в контроллерах Spring для всех страниц и использовать его как PAGE_TITLE, а также как HEAD_TITLE? Или можно как-то установить HEAD_TITLE в JSP для конкретной страницы?

1 Ответ

1 голос
/ 22 ноября 2010

Создайте общее определение и определите атрибуты 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

...