Spring тег сообщения с несколькими аргументами
Я пытаюсь получить сообщение 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
Есть ли способ преодолеть это? Спасибо.
Джордж
Ответы
Ответ 1
Причиной проблемы является то, что ,
(запятая) является разделителем по умолчанию. Поэтому в конце тег сообщения spring получит String A,B,C,D,E,F
для параметра arguments
, и он разделит эту строку на 6 разных внутренних аргументов для сообщения.
Вы должны изменить разделитель. Если вы используете, например, ;
, то он будет работать.
<spring:message code="messageCode"
arguments="${value1};${value2};${value3}"
htmlEscape="false"
argumentSeparator=";"/>
@See Spring Ссылка: Приложение F.6 Тег сообщения
Ответ 2
Я использую совершенно другой подход. Мой источник сообщений на базе базы данных отображается в моей конфигурации с именем i18n:
@Bean(name = {"i18n", "messageSource"})
public MessageSource messageSource() {
return new JpaMessageSource();
}
и я также показываю beans viewResolver.setExposeContextBeansAsAttributes(true);
После этого я могу использовать ${i18n.message("messageCode", value1, value2, value3)}
в моих jsp-представлениях.