似乎是一项简单的任务,结果却是几个小时的痛苦。 我在没有web.xml文件的JavaEE 6和Servlet 3.0.1 api上构建Spring 3.1 MVC应用程序。我有一个 WebMvcConfiguration 类,就像这个片段一样:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "be.collectortools.collectorsite")
public class MvcConfig extends WebMvcConfigurationSupport {
@Bean
public ReloadableResourceBundleMessageSource messageSourceBean() {
String[] basenames = {"classpath:messages"};
ReloadableResourceBundleMessageSource resourceBundle = new ReloadableResourceBundleMessageSource();
resourceBundle.setBasenames(basenames);
resourceBundle.setDefaultEncoding("UTF-8");
return resourceBundle;
}
}
我已成功设置Apache Tiles 2.2.2和2个基本控制器。 现在我想将ResourceBundles添加到正在运行的Spring / Tiles应用程序中,我无法让它们工作。
搜索后我发现了一些可能出错的地方:
错误:
root cause
javax.servlet.jsp.JspTagException: No message found under code 'application.header' for locale 'en_US'.
org.springframework.web.servlet.tags.MessageTag.doStartTagInternal(MessageTag.java:184)
war文件也没有在Eclipse中运行我将它手动部署到我的本地tomcat 7.0.23。这也使我能够更轻松地查看部署的文件结构,并为我提供更好的控制。
我不知道我做错了什么,任何帮助都会受到赞赏。
答案 0 :(得分:1)
MessageSource bean必须命名为messageSource
而不是messageSourceBean
- 如果将@Bean更改为以下内容,它应该正确解析消息:
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
String[] basenames = {"classpath:messages"};
ReloadableResourceBundleMessageSource resourceBundle = new ReloadableResourceBundleMessageSource();
resourceBundle.setBasenames(basenames);
resourceBundle.setDefaultEncoding("UTF-8");
return resourceBundle;
}