Программная настройка ResourceBundleMessageSource - PullRequest
4 голосов
/ 03 января 2012

Я пытаюсь настроить Spring MVC программно вместо файлов XML.Почти все работает нормально, но у меня проблемы с объявлением ResourceBundleMessageSource.

Мой класс конфигурации выглядит следующим образом:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "xx.xx.xx.spring.controller")

public class MvcConfig {

    @Bean
    public ResourceBundleMessageSource configureResourceBundleMessageSource() {
        ResourceBundleMessageSource resource = new ResourceBundleMessageSource();
        resource.setBasename("messages");
        return resource;
    }

    @Bean
    public UrlBasedViewResolver configureUrlBasedViewResolver() {
        UrlBasedViewResolver resolver = new UrlBasedViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(
            org.springframework.web.servlet.view.JstlView.class);
        return resolver;
    }
}

И мой инициализатор выглядит так:

public class Initializer implements WebApplicationInitializer {

    public void onStartup(ServletContext servletContext) 
            throws ServletException {

        AnnotationConfigWebApplicationContext mvcContext = 
            new AnnotationConfigWebApplicationContext();
        mvcContext.register(MvcConfig.class);
        mvcContext.setServletContext(servletContext);
        mvcContext.refresh();
        ServletRegistration.Dynamic menu = servletContext.addServlet("menu", 
            new DispatcherServlet(mvcContext));
        menu.setLoadOnStartup(1);
        menu.addMapping("*.html");
    }
}

Приложение работает, но оно не показывает сообщения от messages.properties, расположенного в /WEB-INF/classes/messages.properties.И если я использую XML-файлы, это тоже хорошо работает.

В JSP у меня есть следующая строка ±

<fmt:message key="heading"/>

И она отображается как ???heading??? в браузере.

Я не знаю, если это проблема с путем, или мне нужно добавить больше параметров.

1 Ответ

9 голосов
/ 10 января 2012

и наконец это работает!Проблема была в названии метода.Если вы хотите создать компонент с идентификатором, идентификатор компонента - это имя метода.Поэтому я изменил название метода (configureResourceBundleMessageSource()) на messageSource().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...