プロパティー・ファイルを JSF 2.0 にロードするには、2 つの方法があります。
- グローバル リソース バンドル プロパティ ファイルをグローバルにロードして、すべての jsf ページがメッセージにアクセスできるようにします。「faces-config.xml」ファイルを作成し、プロパティ ファイルを明示的に宣言できます。
顔-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<resource-bundle>
<base-name>com.mkyong.messages</base-name>
<var>msg</var>
</resource-bundle>
</application>
</faces-config>
オプション 2:ローカル リソース バンドル プロパティ ファイルをローカルにロードするか、指定したページのみにロードします。<f:loadBundle />
messages.properties 内のメッセージにアクセスする必要があるページ内のタグを宣言します。
これらの 2 つのうち、どちらがパフォーマンスを向上させますか?
最初のオプションを使用するとします。これは、アプリケーションの起動時にすべてのバンドルが読み込まれることを意味しますか、それとも遅延読み込みですか? (オンデマンド)
2 番目のオプションを選択した場合、各 ViewRoot に対してバンドルが複数回読み込まれる可能性はありますか?
Java ResourceBundle は、サーブレット コンテナ内でシングルトン オブジェクトを提供するファクトリ クラスですか?
getBundle メソッドは、常にシングルトン オブジェクトを作成するファクトリ メソッドですか?
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources", currentLocale);
ページ abc.xhtml があり、f:loadBundle を使用していて、このページに 1000 人のユーザーがアクセスしているとします。これは、1000 個の resouceBundle オブジェクトが作成されることを意味しますか? それともすべてのページインスタンスで共有されているのはオブジェクトだけですか?