JSF 2.0およびリソース・バンドルの例
このチュートリアルでは、リソースバンドルを使用してJSF 2.0でメッセージを表示する方法を示します。メンテナンスの面では、メッセージを直接ページにハードコードするのではなく、すべてのメッセージをプロパティファイルに入れることを常にお勧めします。
1.プロパティファイル
プロパティファイルを作成し、ページのメッセージを含み、プロジェクトのリソースフォルダに配置します。下の図を参照してください。
message = This is "message"
message.test1 = This is "message.test1"
message.test2 = This is "<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
style="display:block; text-align:center;"
data-ad-format="fluid"
data-ad-layout="in-article"
data-ad-client="ca-pub-2836379775501347"
data-ad-slot="6894224149"></ins>
<script>
(adsbygoogle = window.adsbygoogle ||[]).push({});
</script><h2>message.test3</h2>"
message.test3 = This is "<h2>message.test4</h2>"
message.param1 = This is "message.param1" - {0}
message.param2 = This is "message.param2" - {0} and {1}
プロジェクトフォルダ構造。

2.リソースバンドルの使用
プロパティファイルをJSF 2.0に読み込むには、2つの方法があります。
-
1。グローバルリソースバンドル
すべてのjsfページがメッセージにアクセスできるように、プロパティファイルをグローバルにロードする。 ”
faces-config.xml ** “ファイルを作成し、プロパティファイルを明示的に宣言することができます。 -
faces-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。ローカル・リソース・バンドル
プロパティ・ファイルをローカルにロードするか、または指定されたページのみロードします。
messages.properties
内のメッセージにアクセスする必要があるページの
<f:loadBundle/> ** タグを宣言します。
<f:loadBundle basename="com.mkyong.messages" var="msg"/>
3. JSF 2.0ページ
この場合、
messages.properties
ファイルには ”
msg
“という名前が与えられ、メッセージにアクセスするには ”
msg.key
“を使用します。
-
hello.xhtml **
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:body>
<h2>JSF 2.0 and Resource Bundles Examples</h2>
<ol>
<li><h:outputText value="#{msg.message}"/></li>
<li><h:outputText value="#{msg['message.test1']}"/></li>
<li><h:outputText value="#{msg['message.test2']}"/></li>
<li><h:outputText value="#{msg['message.test2']}" escape="false"/></li>
<li><h:outputText value="#{msg['message.test3']}"/></li>
<li><h:outputText value="#{msg['message.test3']}" escape="false"/></li>
<li>
<h:outputFormat value="#{msg['message.param1']}">
<f:param value="param0"/>
</h:outputFormat>
</li>
<li>
<h:outputFormat value="#{msg['message.param2']}">
<f:param value="param0"/>
<f:param value="param1"/>
</h:outputFormat>
</li>
</ol>
</h:body>
</html>
4.どのように動作するのですか?
-
例1 ** メッセージにアクセスする通常の方法。
<h:outputText value="#{msg.message}"/>
//properties file
message = This is "message"
-
例2
名前にドット “。”があるキーの場合、通常の方法
#\ {msg.message.test1}
を使用することはできません。動作しません。代わりに、
#\ {msg[‘message.test1’]} ** のようなかっこを使用してください。
<h:outputText value="#{msg['message.test1']}"/>
//properties file
message.test1 = This is "message.test1"
-
例3
メッセージにHTMLタグを表示するには、 ”
escape ** “属性を追加してfalseに設定します。
<h:outputText value="#{msg['message.test2']}"/>
<h:outputText value="#{msg['message.test2']}" escape="false"/>
<h:outputText value="#{msg['message.test3']}"/>
<h:outputText value="#{msg['message.test3']}" escape="false"/>
//properties file
message.test2 = This is "<h2>message.test3</h2>"
message.test3 = This is "<h2>message.test4</h2>"
-
例4
パラメータメッセージの場合は、
<h:outputFormat/>
および
<f:param/> ** タグを使用します。
<h:outputFormat value="#{msg['message.param1']}">
<f:param value="param0"/>
</h:outputFormat>
<h:outputFormat value="#{msg['message.param2']}">
<f:param value="param0"/>
<f:param value="param1"/>
</h:outputFormat>
//properties file
message.param1 = This is "message.param1" - {0}
message.param2 = This is "message.param2" - {0} and {1}
