【发布时间】:2011-08-09 12:07:01
【问题描述】:
我有一个使用 i18n 属性文件进行本地化的 Struts2 Web 应用程序。
getText 方法在 jsp 和动作类 getText("some.identifier") 中完美运行。
但是我如何在不是动作类的 java 类中使用它?换句话说,就是无法访问getText 方法的类。
【问题讨论】:
标签: java internationalization struts2
我有一个使用 i18n 属性文件进行本地化的 Struts2 Web 应用程序。
getText 方法在 jsp 和动作类 getText("some.identifier") 中完美运行。
但是我如何在不是动作类的 java 类中使用它?换句话说,就是无法访问getText 方法的类。
【问题讨论】:
标签: java internationalization struts2
ResourceBundle labels =
ResourceBundle.getBundle("MyBundle", currentLocale);
Enumeration bundleKeys = labels.getKeys();
while (bundleKeys.hasMoreElements()) {
String key = (String)bundleKeys.nextElement();
String value = labels.getString(key);
System.out.println("key = " + key + ", " +
"value = " + value);
}
这样的东西会读取你的资源包
【讨论】:
您实际上不需要重新加载捆绑包。您可以使用以下代码来访问 Struts 已加载的副本:
LocalizedTextUtil.findDefaultText(key, ActionContext.getContext().getLocale());
请记住,ActionContext 是线程本地的,因此如果您尝试从与处理请求的线程不同的线程调用它,则会遇到错误。
如果您需要将参数传递给本地化消息,则方法的重载形式将对象数组作为第三个参数。
【讨论】:
您可以使用 ResourceBuldle 加载属性文件并获取所需的属性。
【讨论】: