весенний тег сообщения с несколькими аргументами - PullRequest
32 голосов
/ 21 декабря 2011

Я пытаюсь получить сообщение i18n, как показано ниже:

messageCode = Тестовое сообщение для {0} и {1} и {2}.

В JSP у меня есть это:

<spring:message code="messageCode" 
                arguments="${value1},${value2},${value3}" 
                htmlEscape="false"/>

Аргументы:

value1=A,B
value2=C,D
value3=E,F

Выход для того, что я хочу:

Test message for A,B and C,D and E,F 

Фактический объем производства:

Test message for A and B and C

Есть ли способ преодолеть это? Спасибо.

George

Ответы [ 3 ]

57 голосов
/ 21 декабря 2011

Причиной проблемы является то, что , (запятая) является разделителем по умолчанию. Таким образом, в конце тег сообщения весны получит String A,B,C,D,E,F для параметра arguments и разделит эту строку на 6 различных внутренних аргументов для сообщения.

Вы должны изменить разделитель. Например, если вы используете ;, это сработает.

<spring:message code="messageCode"
       arguments="${value1};${value2};${value3}"
       htmlEscape="false"
       argumentSeparator=";"/>

@ См. Ссылка на пружину: Приложение F.6 Тег сообщения

1 голос
/ 12 июня 2018

Вы также можете отправить различные значения в виде массива и не оставить места для пружины, допустившей ошибку при разборе строкового аргумента.

<c:set var="value1" value="A,B;X" />
<c:set var="value2" value="C,D;Y" />
<c:set var="value3" value="E,F;Z" />

<spring:message code="messageCode"
   arguments="${[value1, value2, value3]}"
   htmlEscape="false" />

Таким образом, вам не нужно беспокоиться о том, что ваш новый разделитель каким-то образом снова будет использоваться в значении.

1 голос
/ 16 декабря 2015

Я использую совершенно другой подход. Мой источник сообщений на основе базы данных представлен в моей конфигурации с именем i18n:

@Bean(name = {"i18n", "messageSource"})
public MessageSource messageSource() {
    return new JpaMessageSource();
}

и я также выставляю свои бобы viewResolver.setExposeContextBeansAsAttributes(true); После этого я могу использовать ${i18n.message("messageCode", value1, value2, value3)} в моих jsp-представлениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...