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