2015-05-26 3 views
0

Я объявил себя компонентSpring не удалось загрузить ResourceBundle

@Component 
public class I18nManagerImpl implements I18nManager{ 

@Autowired 
MessageSource messageSource; 

public ResourceBundle getResourceBundle() { 
    Locale fromConfig = Locale.UK; 

    //Resolve Locale from a configuration service 

    return new MessageSourceResourceBundle(messageSource, fromConfig); //replace code in my question 
} 
@Override 
public String message(String locale) { 
    ResourceBundle beanResourceBundle = getResourceBundle(); 
    String invalidEmail = beanResourceBundle.getString("invalidEmail"); 
    return invalidEmail; 
} 

}

И messageSource определение компонента в applicationContext.xml İŞ

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

Но сообщение не может быть найден, и если смотреть с отладчиком ResourceBundle возвращаемые ключами getResourceBundle, являются нулевыми, а содержимого нет.

Что не так с предоставленным кодом? Вот изображение структуры проекта: enter image description here

+0

Вы можете попробовать с редактированием: <боб ID = "messageSource" класс = "org.springframework.context.support.ResourceBundleMessageSource"> <имя свойства = "basenames" значение = "путь к классам *: сообщения/сообщения"/> – Arpit

+0

Почему вы используете это? Почему бы просто не использовать поддерживаемую по умолчанию поддержку? Что особенного, что вам нужен собственный пользовательский «I18nManagerImpl» –

+0

@Arpit не работает, тот же результат. – Heisenberg

ответ

0
<bean id="messageSource"   
class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basenames" value="classpath:messages"/> 
</bean> 

Добавить

классам

Также адд

<resources mapping="/resources/**" location="/resources/" /> 

Поскольку вы используете аннотацию - Добавить

<annotation-driven /> 
<context:component-scan base-package="your.base.package" /> 

пространство имен для ресурса -

<beans xmlns="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
+0

попробовал! тот же результат. – Heisenberg

+0

вы можете попробовать с reloadableResourceBundle org.springframework.context.support.ReloadableResourceBundleMessageSource – Waqar

+0

Что такое пространство имен для ресурсов? – Heisenberg

0

Проблема была в том, что файл propoerties не был в исходном корне. Я вставлял файл в папку конфигурации src и помещал папку в качестве корня источника.

Смежные вопросы