如何将struts.custom.i18n.resources属性设置为特定文件夹?

时间:2011-12-09 19:35:50

标签: properties struts2

Java 1.6,Struts 2.0.11,Windows OS

我需要在struts.xml中将基于模块的标签属性文件放在src包文件夹之外的哪些配置?

原因:在基于单独模块的文件夹中对所有基于国际化的属性进行分组?

WEB-INF
   |_classes
   |   |__com 
   |        |__xyz
   |            |__Hellofoo.class
   |
   |__ struts.xml   
   |
   |__props
        |__xyz
            |_ en.properties [ English Labels ]
               jp.properties [ Japanese Labels]
               spn.properties[ Spainish Labels ]

3 个答案:

答案 0 :(得分:1)

我认为你必须在struts.xml文件或属性文件中指定它,如

struts.custom.i18n.resources=global-messages, image-messages

或在像

这样的xml文件中
<constant name="struts.custom.i18n.resources" value="global-messages, image-messages" />

或者,您可以使用某种Listener根据需要自定义它。

IMO文本资源应根据地区和包装进行组织,但这是一个选择问题。

答案 1 :(得分:1)

我找到了解决方案

首先在struts.properties struts.custom.i18n.resources=globalMessages 然后,将以下代码添加到您的StartupServlet或将在服务器启动的位置执行的其他位置

URL[] urls;
try {
    File file = new File("/your path");
    URL url = file.toURI().toURL();          
    urls = new URL[]{url};

    ClassLoader cl = new URLClassLoader(urls);
    LocalizedTextUtil.setDelegatedClassLoader(cl);
    LocalizedTextUtil.addDefaultResourceBundle("globalMessages");
} catch (MalformedURLException e) {
    e.printStackTrace();
}

答案 2 :(得分:1)

现在这不是你特定问题的答案。但是我认为对于那些偶然发现这个问题的人来说(例如我)可能会有用“我如何将struts.custom.i18n.resources属性设置为特定文件夹(在src文件夹内,但不在其下方)”

现在,当我在struts.properties中设置以下内容时,它无法正常工作

struts.custom.i18n.resources=resources/locale-bundles/label-values,resources/locale-bundles/error-values

但是,如果我在struts.xml中设置它,它确实如此。 (不知道为什么)

<constant name="struts.custom.i18n.resources"    
value="resources/locale-bundles/label-values, resources/locale-bundles/error-values" />