我有一个Struts2 Web应用程序,它使用i18n属性文件进行本地化。
getText
方法在jsp和动作类getText("some.identifier")
中完美运行。
但是我如何在不属于动作类的java类中使用它呢?换句话说,无法访问getText
方法的类。
答案 0 :(得分:4)
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);
}
这样的内容将会读取您的资源包
答案 1 :(得分:4)
您实际上不需要重新加载捆绑包。您可以使用以下代码来访问Struts已加载的副本:
LocalizedTextUtil.findDefaultText(key, ActionContext.getContext().getLocale());
请记住,ActionContext
是线程本地的,因此如果您尝试从与处理请求的线程不同的线程调用此线程,则会遇到错误。
如果需要将参数传递给本地化消息,则方法的重载形式将对象数组作为第三个参数。
答案 2 :(得分:2)
您可以使用ResourceBuldle加载属性文件并获取所需的属性。