2012-01-03 84 views
4

我試圖以編程方式配置Spring MVC而不是xml文件。幾乎所有的工作都很好,但我在ResourceBundleMessageSource聲明中遇到了麻煩。以編程方式配置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???

我不知道它是否是路徑問題,或者我需要添加更多參數。

+0

嘗試resource.setBasename(「classpath:messages」); – fmucar 2012-01-03 17:59:00

+0

謝謝,但它不起作用。我有點沮喪... – Quaiks 2012-01-03 22:36:50

+0

然後我建議你在ResourceBundleMessageSource中放置一個斷點來查看它試圖找到文件的位置。 – fmucar 2012-01-04 09:25:12

回答

9

最後它的工作!問題在於方法名稱。如果你想創建一個帶有id的bean,那麼bean的id就是方法的名字。所以我已經將方法的名稱(configureResourceBundleMessageSource())更改爲messageSource()

+2

或者你也可以在註解中指定bean名稱:'@Bean(name =「messageSource」)' – 2012-01-10 10:21:34

+1

That was good estimada @Quaiks – 2013-01-19 18:52:01