このチュートリアルでは、リソースバンドルを使用して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}

プロジェクトフォルダ構造。


jsf2-resource-bundles-folder、title = "jsf2-resource-bundles-folder"、width = 298、height = 348

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}

ソースコードをダウンロードする

ダウンロード – リンク://wp-content/uploads/2010/09/JSF-2-Resource-Bundles-Example.zip[JSF-2-Resource-Bundles-Example.zip](8KB)