Динамические имена в Spring интернационализации - PullRequest
5 голосов
/ 13 декабря 2010

У меня в файле свойств есть несколько свойств, которые нужно перевести на разные языки:

list.var1=XXX
list.var2=XXX
list.var3=XXX

Это значения списка, поэтому в JSP я хочу получить переведенное значение.Поэтому у меня есть свойство, например, myVar, значения которого могут быть {var1, var2, var3}, и я хочу получить сообщение «list. $ {MyVar}».

Проблема заключается в том, что в fmt: messageтег, ключевой атрибут не принимает выражения.

<%@ taglib prefix="fmt" uri="java.sun.com/jstl/fmt" %>
<fmt:message key="list.${myVar}"/>

Каков наилучший способ сделать это?

Спасибо.

1 Ответ

3 голосов
/ 13 декабря 2010

Это должно работать так, как вы хотите: <fmt:message key="list.${myVar}"/>

Поскольку определение lib тега позволяет ключу быть выражением: fmt.tdl:

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">

  <description>JSTL 1.1 i18n-capable formatting library</description>
  <display-name>JSTL fmt</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>fmt</short-name>
  <uri>http://java.sun.com/jsp/jstl/fmt</uri>
...
<tag>
    <description>
        Maps key to localized message and performs parametric replacement
    </description>
    <name>message</name>
    <tag-class>org.apache.taglibs.standard.tag.rt.fmt.MessageTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <description>
Message key to be looked up.
        </description>
        <name>key</name>
        <required>false</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
...

И что в действительности работало вмай приложение

<%@ taglib prefix='spring' uri='http://www.springframework.org/tags'%>
...
<spring:message code="myPrefix.${transaction.state}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...