7.3. 获取本地化消息
本节介绍在应用程序的不同部分中获取本地化消息的方法。
-
在界面 XML 描述中,用于显示静态文本的组件属性(例如 caption)可以使用MessageTools.loadString()方法的规则来处理本地化消息。例如:
-
caption ="msg://roleName"
- 获取当前界面的消息包中roleName
键定义的消息。界面消息包由 XML 描述中根window
元素的messagesPack
属性定义。 -
caption ="msg://com.company.sample.entity/Role.name"
- 获取由com.company.sample.entity
消息包中的Role.name
键定义的消息。
-
-
在界面控制器中,可以通过以下方式检索本地化字符串:
-
从当前界面消息包:
-
使用继承自 AbstractFrame 基类的
getMessage()
方法。例如:
-
String msg = getMessage("warningMessage");
-
使用继承自
AbstractFrame
基类的formatMessage()
方法。此时,按照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 容器管理的组件(托管 bean,services,JMX-beans,portal 模块的 Spring MVC 控制器),本地化消息可以使用注入的Messages 基础接口进行检索:
@Inject protected Messages messages; ... String msg = messages.getMessage(getClass(), "warningMessage");
portal 模块中 Thymeleaf 模板的本地化消息也可以通过 portal 模块的主消息包中的消息键获得:
模板<h1 th:text="#{messageKey}"></h1>
portal 主消息包messageKey = Localized message
-
在无法进行注入的应用程序代码中,可以使用
AppBeans
类的静态get()
方法获取Messages
接口:protected Messages messages = AppBeans.get(Messages.class); ... String msg = messages.getMessage(getClass(), "warningMessage");