Struts2 i18n在java类中

时间:2011-08-09 12:07:02

标签: java internationalization struts2

我有一个Struts2 Web应用程序,它使用i18n属性文件进行本地化。 getText方法在jsp和动作类getText("some.identifier")中完美运行。

但是我如何在不属于动作类的java类中使用它呢?换句话说,无法访问getText方法的类。

3 个答案:

答案 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加载属性文件并获取所需的属性。