ResourceBundle из Java/Struts и выражения замены
-
09-06-2019 - |
Вопрос
Если у меня есть файл свойств пакета ресурсов:
А.свойства:
thekey={0} This is a test
И затем у меня есть код Java, который загружает пакет ресурсов:
ResourceBundle labels = ResourceBundle.getBundle("A", currentLocale);
labels.getString("thekey");
Как заменить текст {0} каким-либо значением
labels.getString("thekey", "Yes!!!");
Таким образом, вывод получается как:
Yes!!! This is a test.
Для этого в Resource Bundle нет методов.Кроме того, я нахожусь в Struts, есть ли способ использовать MessageProperties для замены.
Решение
Класс, который вы ищете, — java.text.MessageFormat;конкретно, звоню
MessageFormat.format("{0} This {1} a test", new Object[] {"Yes!!!", "is"});
или
MessageFormat.format("{0} This {1} a test", "Yes!!!", "is");
вернется
"Yes!!! This is a test"
[К сожалению, с подключением Struts помочь не могу, хотя этот выглядит актуальным.]
Другие советы
есть класс org.apache.struts.util.MessageResources с различными методами getMessage некоторые из них принимают аргументы для вставки в фактическое сообщение.
Например.:
messageResources.getMessage("thekey", "Yes!!!");
Не связан с StackOverflow