访问struts动作类外部的资源包

时间:2013-05-28 05:59:59

标签: struts2 struts-1 resourcebundle

使用Struts 2.3框架处理资源包有几种方法。这包括在View类中使用某些UI标记或在Action类中使用getText()方法。

但是,没有直接的机制来访问java类或除View和Action之外的任何其他类的资源包。

我发现有两种方法可以在java类中访问它,但是,它们无法完全替换Struts 1.2框架的旧MessageResources

以下两种方式都有缺点

  1. 使用ResourceBundlejava.util包。

    Locale locale = (Locale)request.getSession().getAttribute(ConstantsFnl.LOCALE_KEY);
    ResourceBundle rb = ResourceBundle.getBundle(bundle,locale);
    message = rb.getString(key);
    

    这种方法的缺点是你不能传递一个可以在你的消息文本中替换的参数数组。这个功能在Struts 1.2中有MessageReosurces

  2. 使用Struts 2.3框架的DefaultTextProvider

    DefaultTextProvider dtp = new DefaultTextProvider();
    return dtp.getText(key, (String[])params);
    
  3. 虽然这种方法为您提供了一种方法来传递要在消息文本中替换的参数数组,但它并没有为您提供指定语言环境或指定要搜索的包的机制。此外,此功能存在于带有MessageResources类的Struts 1.2。

    寻找最佳方法。对此的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

您可以使用以下方法:

com.opensymphony.xwork2.util.LocalizedTextUtil