【发布时间】:2012-01-03 17:46:53
【问题描述】:
我正在尝试以编程方式配置 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");
}
}
应用程序正在运行,但它没有显示来自位于/WEB-INF/classes/messages.properties 中的messages.properties 的消息。如果我使用 xml 文件,它也可以正常工作。
在 JSP 中我有以下行±
<fmt:message key="heading"/>
它在浏览器中显示为???heading???。
不知道是路径有问题还是需要放更多参数。
【问题讨论】:
-
尝试resource.setBasename("classpath:messages");
-
谢谢,但它不起作用。我有点沮丧……
-
那么我建议你在 ResourceBundleMessageSource 中放置一个断点,看看它试图在哪里找到文件。
-
好的。代码甚至可以运行。如果我用 XML 配置它,执行将在断点处停止,但如果我使用编程配置,它不会。我将继续调查,但我将仅使用捆绑配置保留 XML。
标签: spring-mvc