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}