Struts 2 переопределяет ключи сообщений ресурсов
Учти это
<constant name="struts.custom.i18n.resources"
value="messages/de,fault,messages/customize" />
А такжеdefault.properties
содержание
label.sample = Default Sample
И содержимое customize.properties
//Duplicate key
label.sample = Customize Sample
призвание<s:text name="label.sample">
приведет кCustomize Sample
Если мы рассмотрим вышеупомянутую структуру i18n, то это будет выглядеть корректно, так как мы сначала определили значение по умолчанию, а затем настройку, поэтому ключи в свойствах настройки будут заменять ключи по умолчанию.
Теперь мы пытаемся динамически переопределить сообщения настройки. Так
<!--The customize is removed -->
<constant name="struts.custom.i18n.resources"
value="messages/default" />
В некоторых случаях, например, при запуске сервлета, мы добавляем сообщения настройки следующим образом:
LocalizedTextUtil.clearDefaultResourceBundles();
LocalizedTextUtil.addDefaultResourceBundle("messages/customize");
Это не будет работать! В качестве альтернативы, если мы удалим default из свойства i18n и сделаем это, как показано ниже, мы получим значение настройки
LocalizedTextUtil.clearDefaultResourceBundles();
LocalizedTextUtil.addDefaultResourceBundle("messages/default");
LocalizedTextUtil.addDefaultResourceBundle("messages/customize");
Можно ли сохранить список свойств по умолчанию в XML и добавлять только настраиваемые свойства во время выполнения
Вот почему нам это нужно Мы разрабатываем и размещаем веб-приложение, которое продается множеству клиентов. Приложение имеет сообщение по умолчанию. Вполне возможно, что ОДИН из наших клиентов хочет изменить некоторые сообщения приложения по умолчанию, а другие - нет. Итак, у нас есть папка для настройки сообщений, и каждый банк может переопределять свои собственные сообщения.
У нас есть ниже структура папок для клиентов:
+messages
-resources_fa_IR.properties
-resources_en_US.properties
+customer1
-customize_fa_IR.properties
-customize_en_US.properties
+customer2
-customize_fa_IR.properties
-customize_en_US.properties
И в StartUpSerlvet
//Set customer customize messages
LocalizedTextUtil.addDefaultResourceBundle("messages/" + activeCustomer+"/customize");