JSF 標準書式付き出力コンポーネント

関連項目

JavaServer Faces 標準の書式付き出力コンポーネント 書式付き出力のアイコン を「パレット」の「標準」カテゴリからビジュアルデザイナーにドラッグすることによって、書式付きの出力テキストフィールドを作成できます。書式付き出力コンポーネントは出力テキストコンポーネントに似た機能を提供しますが、コンポーネントの描画時にローカライズのパラメータを置換する機能も提供します。出力テキスト同様、書式付き出力は、HTML では <span> タグになります。

このコンポーネントは、拡張されたコンポーネントで、JSP コードの直接編集とリソースバンドルの知識が必要になります。「プロパティー」ウィンドウでこのコンポーネントのプロパティーを編集したり、ビジュアルデザイナーでコンポーネントを右クリックして「データにバインド」を選択し、データプロバイダにバインドしたりできます。

次に、このコンポーネントを使用する方法を簡単に説明します。

ページの「ソース」ビューでは、書式付き出力コンポーネントは、<h:outputFormat> という JavaServer Faces コンポーネントタグであり、このタグは、java.text.MessageFormat オブジェクトへの入力をその値とみなします。<h:outputFormat> タグ内に <f:param> タグを入れ子にして、パラメータ {0}{1} などを置き換える値を指定することもできます。

有効なメッセージ構文についての詳細は、次の Web サイトにある java.text.MessageFormat の Javadoc ページを参照してください。

ローカライズとリソースバンドルについては、 のローカライズに関連したセクションを参照してください。

単純な例

<f:loadBundle> との組み合わせでこの例を使ってメッセージ文字列を取得できますが、実際には書式付き出力コンポーネントを使用するために、必ずリソースバンドルを使わなければならないということではありません。

この例では、ユーザーのショッピングカート内の項目数を数える、count というセッション Bean に integer 型プロパティーが作成されていると仮定します (詳細は、「ナビゲータ」ウィンドウについてのセッション Bean の説明を参照)。この書式付き出力コンポーネントは、ショッピングカート内の項目数を表示します。

   <h:outputFormat binding="#{Page1.formattedOutput1}" 
                   id="formattedOutput1" 
                   style="left: 216px; top: 360px; position: absolute"
                   value="You have {0} items in your shopping cart.">
      <f:param value="#{SessionBean1.count}"/>
   </h:outputFormat>

リソースバンドルの使用例

上記の例の文字列がリソースバンドル内の itemCount キーの下にある場合は、次のコードを使用できます。

   <f:loadBundle basename="webapplication1.Bundle"
                 var="messages"/>
   ...
   <h:outputFormat binding="#{Page1.formattedOutput1}" 
                   id="formattedOutput1" 
                   style="left: 216px; top: 360px; position: absolute"
                   value="#{messages.itemCount}">
      <f:param value="#{SessionBean1.count}"/>
   </h:outputFormat>

この例のコードが機能するには、あるいはアプリケーション内部にリソースバンドルを準備するほかのどのような場合も、リソースバンドルの作成と削除で説明するように、メッセージを含めるプロパティーファイルを作成する必要があります。

新しいプロパティーファイルを作成すると、プロパティーエディタでこのファイルが開きます。追加するプロパティーごとに「新規プロパティー」をクリックし、「新規プロパティー」ダイアログでキーと値を入力します。たとえば上記の例のプロパティーには itemCount というキーがあり、そのテキストは「You have {0} items in your shopping cart」になります。

アプリケーションの配備時には、<f:loadBundle> タグが読み込めるよう、このプロパティーファイルが WEB-INF/classes/<プロジェクト名> ディレクトリに自動的にコピーされます。詳細は、バンドルを読み込むコンポーネントを参照してください。

関連項目
コンポーネントの手順
コンポーネント関連の手順早見表
Visual Web の「パレット」について

著作権と商標について