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");