Подтвердить что ты не робот

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

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

Джордж

4b9b3361

Ответ 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-представлениях.