4.7.1. Получение локализованных сообщений
В данном разделе рассмотрены способы получения локализованных сообщений в различных компонентах приложения.
-
В XML-дескрипторах экранов атрибуты компонентов, отображающие статичный текст (например caption), могут обращаться к локализованным сообщениям по правилам метода MessageTools.loadString(). Например:
-
caption="msg://roleName"
- получить сообщение, заданное ключомroleName
в пакете сообщений текущего экрана. Пакет сообщений экрана задается в атрибутеmessagesPack
корневого элементаwindow
. -
caption="msg://com.company.sample.entity/Role.name"
- получить сообщение, заданное ключомRole.name
в пакете сообщенийcom.company.sample.entity
.
-
-
В контроллерах экранов локализованные сообщения можно получать следующими способами:
-
Из пакета сообщений текущего экрана:
-
Методом
getMessage()
, унаследованным от базового класса AbstractFrame. Например:String msg = getMessage("warningMessage");
-
Методом
formatMessage()
, унаследованным от базового классаAbstractFrame
. В этом случае сообщение используется для форматирования переданных параметров по правилам методаString.format()
. Например:messages.properties:
warningMessage = Invalid email address: '%s'
Java-контроллер:
String msg = formatMessage("warningMessage", email);
-
-
Из произвольного пакета сообщений путем инжекции интерфейса инфраструктуры Messages. Например:
@Inject private Messages messages; @Override public void init(Map<String, Object> params) { String msg = messages.getMessage(getClass(), "warningMessage"); ... }
-
-
В компонентах, управляемых контейнером Spring (управляемых бинах, сервисах, JMX-бинах, контроллерах Spring MVC модуля portal) локализованные сообщения можно получать путем инжекции интерфейса инфраструктуры Messages:
@Inject protected Messages messages; ... String msg = messages.getMessage(getClass(), "warningMessage");
Локализованные сообщения для шаблонов Thymeleaf в модуле portal также доступны по ключу:
template<h1 th:text="#{messageKey}"></h1>
portal main message packmessageKey = Localized message
-
В любом коде приложения, где невозможна инжекция, интерфейс
Messages
может быть получен с помощью статического методаget()
классаAppBeans
:protected Messages messages = AppBeans.get(Messages.class); ... String msg = messages.getMessage(getClass(), "warningMessage");