Spring MessaegSource: доступ к файлу сообщений в банке зависимостей - PullRequest
0 голосов
/ 20 марта 2019

У меня есть приложение Spring MVC, использующее i18n .Теперь я хочу использовать файл сообщений, предоставляемый в зависимости.Я хочу использовать одни и те же ключи / значения, чтобы иметь согласованный вывод в моем приложении.Но почему-то это не работает ... Чего мне не хватает?

Мой ResourceHandler:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**")
            .addResourceLocations("/WEB-INF/resources/");
}

Мой источник сообщений:

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource source = new ResourceBundleMessageSource();
    source.setBasenames("messages/user/login/login",
                        "messages/user/user",
                        //external file (NOT WORKING)
                        "classpath:messages/enums/enums");
    source.setDefaultEncoding("UTF-8");
    return source;
}

Расположение сообщения. Файлначиная с корня war:

WEB-INF/lib/utils-0.1.jar/messages/enums/enums_en.properties

1 Ответ

0 голосов
/ 25 марта 2019

Мне пришлось изменить две вещи, чтобы заставить его работать:

  1. Мне нужно было ReloadableResourceBundleMessageSource, а не ResourceBundleMessageSource.
  2. После изменения исходного класса classpath: пришлось добавить ко всем базовым именам. Нет никакой разницы между локальными файлами ресурсов и файлами внутри зависимостей.

Окончательный код выглядит следующим образом:

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource source = new ResourceBundleMessageSource();
    source.setBasenames("classpath:messages/user/login/login",
                        "classpath:messages/user/user",
                        //external file (in utils-0.1.jar)
                        "classpath:messages/enums/enums");
    source.setDefaultEncoding("UTF-8");
    return source;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...