【问题标题】:Struts2 i18n in java classjava类中的Struts2 i18n
【发布时间】:2011-08-09 12:07:01
【问题描述】:

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

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

【问题讨论】:

    标签: java internationalization struts2


    【解决方案1】:
    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);
    }
    

    这样的东西会读取你的资源包

    【讨论】:

      【解决方案2】:

      您实际上不需要重新加载捆绑包。您可以使用以下代码来访问 Struts 已加载的副本:

      LocalizedTextUtil.findDefaultText(key, ActionContext.getContext().getLocale());
      

      请记住,ActionContext 是线程本地的,因此如果您尝试从与处理请求的线程不同的线程调用它,则会遇到错误。

      如果您需要将参数传递给本地化消息,则方法的重载形式将对象数组作为第三个参数。

      【讨论】:

        【解决方案3】:

        您可以使用 ResourceBuldle 加载属性文件并获取所需的属性。

        【讨论】:

        • 感谢您的快速回复。你有关于如何做的简短代码示例吗?
        猜你喜欢
        • 2013-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-24
        • 1970-01-01
        • 2015-09-02
        • 1970-01-01
        相关资源
        最近更新 更多