2012-01-03 3 views
4

xml 파일 대신 프로그래밍 방식으로 Spring MVC을 구성하려고합니다. 거의 모든 것이 잘 작동하지만, 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"); 
    } 
} 

/WEB-INF/classes/messages.properties에 위치한이 messages.properties에서 메시지를 표시되지 작업이지만, 응용 프로그램 . 그리고 xml 파일을 사용하면 잘 작동합니다. 는 JSP에서

나는

<fmt:message key="heading"/> 

± 다음 줄을 가지고 그리고 그것은 브라우저에서 ???heading??? 같이 표시됩니다.

경로에 문제가 있는지 또는 더 많은 매개 변수를 입력해야하는지 잘 모릅니다.

+0

try resource.setBasename ("classpath : messages"); – fmucar

+0

고맙지 만 작동하지 않습니다. 좀 실망 스럽네요 ... – Quaiks

+0

그러면 ResourceBundleMessageSource에 중단 점을 두어 파일을 찾는 위치를 확인하는 것이 좋습니다. – fmucar

답변

9

마지막으로 작동 중입니다. 문제는 메소드 이름에있었습니다. id를 가진 빈을 만들고 싶다면, 빈의 id가 메소드의 이름이된다. 그래서 메서드 이름 (configureResourceBundleMessageSource())을 messageSource()으로 변경했습니다.

+2

또는 주석에 bean 이름을 지정할 수 있습니다 :'@Bean (name = "messageSource")' –

+1

그게 좋았어요 estimada @Quaiks –

관련 문제