ResourceBundle не найден для MessageSource

#spring #spring-mvc

#spring #spring-mvc

Вопрос:

Я не могу найти источник сообщения в своем приложении. Я установил следующую конфигурацию

 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
        <list><value>resources.dev</value></list>
    </property>
</bean>
  

Будут добавлены дополнительные файлы .properties.

Файл dev.properties находится в ROOT/resources/dev.properties том месте, где ROOT является веб-приложением

Dev.properties должен быть в ROOT/resources/dev.properties

dev.properties содержит

 test.url="external.url.com"
  

В моем контроллере я пытаюсь получить доступ к сообщению как

 messageSource.getMessage("test.url", new Object[]{}, Locale.getDefault())
  

Я получаю следующее исключение

 org.springframework.context.NoSuchMessageException: No message found under code 'test.url' for locale 'en_US'.
  

Ответ №1:

Попробуйте просто использовать это в своем XML:

 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="resources/dev"/>
</bean>
  

Затем попробуйте поместить ваш файл dev.properties в ROOT/WEB-INF/classes/resources (где ROOT — это корневой каталог разнесенного веб-приложения).

Комментарии:

1. Спасибо за ответ. На самом деле базовые имена представлены в виде списка, поскольку будут добавлены дополнительные свойства файла. И я не могу изменить расположение папки ресурсов. Я обновил вопрос.

2. Ваши пакеты ресурсов должны находиться в пути к классу. ROOT/ веб-приложения отсутствует в пути к классу. Смотрите этот JavaDoc: download.oracle.com/javase/6/docs/api/java/util/… Если вы не можете их переместить, вам может потребоваться написать собственную реализацию MessageSource для их загрузки на основе путей к файлам. static.springsource.org/spring/docs/1.2.9/api/org /…