Вызванные: org на.springframework.контекст.NoSuchMessageException: сообщение не найдено под кодом

попытка заставить интернационализацию весны работать. Я использовал classpath: messages basename, created .свойства файлов для языков. Они копируются в папку web-inf, и коды существуют в файле свойств ...

вот ide, показывающая все, Пожалуйста, помогите мне. Я скопировал настройку из другого проекта, который я сделал, который отлично работает. Я попытался создать загрузку разных файлов сообщений, но ничего не взял ... фото шоу сеть.XML-файле, весна-сервлет.xml и структура каталогов.

This shows everything, I can't see what I am missing

редактировать Если я добавляю определение bean в applicationContext вместо spring-servlet, оно работает .. ?

4 ответов


Я пойду на мою попытку:

Если файл находится под


держите файлы свойств сообщения вне пути к классам (WEB-INF/classes) и определите компонент, как показано ниже

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages"/>
<property name="cacheSeconds" value="1"/>

согласно doc ReloadableResourceBundleMessageSource предоставляет вам преимущество изменения сообщений на лету, которые spring извлекает через cachSeconds. Этот класс отличается от ResourceBundleMessageSource только указанием расположения ресурса.


все детали configurartion все правильно, но сделать одну вещь, которая когда-либо файлы свойств настроены в дочернем файле конфигурации это означает ваш spring-servlet.xml настройте все свойства в applicationContext.xml это означает, что родительский конфигурационный файл максимально работает. попробуйте и удалите конфигурацию сведений о свойствах в spring-servlet.XML...........


хотя для многих это звучит глупо, но ошибка моего кода была в том, что мы написали собственный MessageSource. Который называл Spring MessageSource.

но в коде это было похоже (MessageSource(MessageSource)). Поэтому мы смотрели вверх, вверх.

удален дополнительный вызов, и теперь он работает.