プロジェクトにプロパティ ファイル message_en.properties message_de.properties があり、エントリ InfoBox_description=welcome to the this application とドイツ語の対応する値があります。これで、ユーザーは説明を動的に変更できるようになり、同じことが適切な変換で他のプロパティ ファイルにも反映されます。これを行うにはどうすればよいですか? 私はJSF2と素顔を使用しています
前もって感謝します
プロジェクトにプロパティ ファイル message_en.properties message_de.properties があり、エントリ InfoBox_description=welcome to the this application とドイツ語の対応する値があります。これで、ユーザーは説明を動的に変更できるようになり、同じことが適切な変換で他のプロパティ ファイルにも反映されます。これを行うにはどうすればよいですか? 私はJSF2と素顔を使用しています
前もって感謝します
war 内のソース フォルダー内のパッケージにプロパティ ファイルがあると仮定すると、マネージド Bean にそれをロードする方法は次のとおりです。
Properties properties = new Properties();
try {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
properties.load(classLoader.getResourceAsStream("/yourfile.properties"));
} catch (IOException e) {
// handle exception
}
// then initialize attributes with the contents of properties file. Example:
property1 = properties.getProperty("property1");
property2 = properties.getProperty("property2");
次に、ユーザーが値を更新 (フォームを送信) し、プロパティ ファイルを更新する場合は、次の手順を実行します。
properties.setProperty("property1", property1);
properties.setProperty("property2", property2);
try {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = classLoader.getResource("/yourfile.properties");
properties.store(new FileOutputStream(new File(url.toURI())), null);
} catch (Exception e) {
// handle exception
}
プロパティファイルが戦争にない場合(サーバーのファイルシステムにある場合)も可能ですが、もう少し複雑です..
編集:BalusCが説明したように、戦争内で変更されるプロパティファイルを持つことは便利ではありません。戦争を再展開すると、変更が失われるためです。プロパティ ファイルにアクセスできる場合は、サーバーのファイル システムにプロパティ ファイルを配置できます。またはプロパティファイルを使用しないでください(代わりにデータベースを使用してください)