7.3. 获取本地化消息

本节介绍在应用程序的不同部分中获取本地化消息的方法。

  • caption ="msg://roleName" - 获取当前界面的消息包中 roleName 键定义的消息。界面消息包由 XML 描述中根 window 元素的 messagesPack 属性定义。

  • caption ="msg://com.company.sample.entity/Role.name" - 获取由 com.company.sample.entity 消息包中的 Role.name 键定义的消息。

  • 界面控制器中,可以通过以下方式检索本地化字符串:
  • 从当前界面消息包:
  1. -

使用继承自 AbstractFrame 基类的 getMessage() 方法。例如:

  1. String msg = getMessage("warningMessage");
  • 使用继承自 AbstractFrame 基类的 formatMessage() 方法。此时,按照 String.format() 方法定义的规则使用提取的消息对提交的参数进行格式化。例如:

messages.properties:

  1. warningMessage = Invalid email address: '%s'

Java 控制器:

  1. String msg = formatMessage("warningMessage", email);
  1. -

使用注入的 Messages 基础接口从各种消息包获取消息。例如:

  1. @Inject
  2. private Messages messages;
  3. @Override
  4. public void init(Map<String, Object> params) {
  5. String msg = messages.getMessage(getClass(), "warningMessage");
  6. ...
  7. }
  • 对于由 Spring 容器管理的组件(托管 beanservicesJMX-beansportal 模块的 Spring MVC 控制器),本地化消息可以使用注入的Messages 基础接口进行检索:
  1. @Inject
  2. protected Messages messages;
  3. ...
  4. String msg = messages.getMessage(getClass(), "warningMessage");

portal 模块中 Thymeleaf 模板的本地化消息也可以通过 portal 模块的主消息包中的消息键获得:

模板

  1. <h1 th:text="#{messageKey}"></h1>

portal 主消息包

  1. messageKey = Localized message
  • 在无法进行注入的应用程序代码中,可以使用 AppBeans 类的静态 get() 方法获取 Messages 接口:
  1. protected Messages messages = AppBeans.get(Messages.class);
  2. ...
  3. String msg = messages.getMessage(getClass(), "warningMessage");