簡単な作業のように見えたのは、数時間の苦しみであることが判明しました。Web.xmlファイルを使用せずにJavaEE6およびサーブレット3.0.1APIでSpring3.1MVCアプリケーションを構築しています。このフラグメントのような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;
}
}
ApacheTiles2.2.2を2つの基本的なコントローラーと一緒に正常にセットアップしました。ここで、動作中のSpring / TitlesアプリケーションにResourceBundleを追加したいのですが、動作させることができません。
検索した後、私はうまくいかないかもしれないいくつかを見つけました:
- JSPページでfmt:message key = "application.header"を使用しますか、それともspring:message code = "application.header"を使用する必要がありますか?最初の値は見つからない値を無視し、2番目の値はエラーをスローします。
- 私はReloadableResourceBundleMessageSourceを使用していますが、これは「より良い」か、少なくともResourceBundleMessageSourceよりも新しいはずです。これで問題ありませんか?
- ReloadableResourceBundleMessageSourceはより多くの場所からファイルをロードするため、クラスパスを指定しました。
- messages.propertiesファイルをsrc/main/resourcesフォルダーに配置しました
- バンドル名の末尾にロケールを追加しない場合、これが(デフォルトの)フォールバックとして使用されるのは正しいですか?いずれにせよ、「en_US」ロケールを追加しても役に立ちません。
エラー:
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内で実行されていません。ローカルのTomcat7.0.23に手動でデプロイします。これにより、デプロイされたファイル構造をより簡単に確認でき、より適切に制御できるようになります。
私は何が間違っているのか分かりません。助けていただければ幸いです。