SpringMVC 3 и Tiles 2 локализация заголовка страницы - PullRequest
12 голосов
/ 04 августа 2011

У меня есть настройки проекта с использованием Spring 3, Apache Tiles 2 и Maven.До того, как я внедрил Tiles, я использовал файл messages.properties для динамического заполнения заголовков веб-страницы (той части, которая появляется между тегами заголовка и заголовка).Причиной этого было допустить локализацию в будущем.Однако, так как я интегрировал плитки, файл tile.xml, кажется, контролирует заголовки для моей страницы.

Есть ли способ изменить это так, чтобы заголовок страницы исходил из messages.properties для каждого jsp, который я использую в качестветело страницы?

tile.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" в качестве заголовка. Я бы предпочел, чтобы это сообщение пришлосообщения. свойства.Я попытался поместить сообщение в теги заголовка на странице "body", но безрезультатно.

Проект настроен на GitHub, вы можете взглянуть на этот URL: Group-Deal-Клон

Ответы [ 2 ]

18 голосов
/ 25 февраля 2012

Другой вариант, без c: set:

в плитках-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
10 голосов
/ 04 августа 2011

Вы можете поместить ключ сообщения springs в атрибут title плиток.

<definition name="home" extends="base.definition">
    <put-attribute name="title" value="message.key.welcome.text" />
    <put-attribute name="body" value="/WEB-INF/views/home.jsp" />
</definition>  

и использовать его в jsp как-то так

     <c:set var="titleKey">
        <tiles:insertAttribute name="title" ignore="true" />
    </c:set>
    <title><spring:message key="${titleKey}" /></title>

У меня сейчас нет плиток + пружинпроект на руках, так что я не могу проверить, синтаксис на 100% правильный, но я уже использовал этот подход раньше.

И, конечно, вы можете сделать что-то подобное, чтобы получить на заголовок страницы

<title><spring:message key="welcome.${titleKey}"/></title>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...