以编程方式配置ResourceBundleMessageSource

时间:2012-01-03 17:46:53

标签: spring-mvc

我正在尝试以编程方式而不是xml文件配置Spring MVC。几乎所有事情都运转正常,但我在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的{​​{1}}的消息。如果我使用xml文件也可以正常工作。

在JSP中我有以下行±

/WEB-INF/classes/messages.properties

它在浏览器中显示为<fmt:message key="heading"/>

我不知道路径是否有问题,或者我需要增加更多参数。

1 个答案:

答案 0 :(得分:9)

最后它正在工作!问题出在方法名称中。如果要创建具有id的bean,则bean的id是方法的名称。所以我已将方法的名称(configureResourceBundleMessageSource())更改为messageSource()