Как установить свойства struts.custom.i18n.resources для определенной папки? - PullRequest
3 голосов
/ 09 декабря 2011

Java 1.6, Struts 2.0.11, ОС Windows

Какие конфигурации мне нужно выполнить в 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 ]

1 голос
/ 29 марта 2012

Я нашел решение

сначала в 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();
}
1 голос
/ 19 августа 2012

Теперь это не совсем ответ на ваш конкретный вопрос.Однако я думаю, что это может быть полезно для людей (таких как я), которые наткнулись на эту страницу с вопросом «Как я могу установить свойства 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" />  
1 голос
/ 09 декабря 2011

Я считаю, что вы должны указать это либо в файле struts.xml, либо в файле свойств, например

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

или в xml-файле, например

<constant name="struts.custom.i18n.resources" value="global-messages, image-messages" />

В качестве альтернативы вы можете использовать какое-то Listener, чтобы настроить его в соответствии с вашими потребностями.

Текстовые ресурсы ИМО должны быть организованы в соответствии с регионом и пакетом, но это вопрос выбора.

...