JavaServer Faces ユーザーズガイド
|
目次
|
3.7 メッセージの表示
JavaServer Facesには、UIコンポーネントにメッセージを関連付けて画面に表示する機能があります。
主にバリデータでエラーを検出した場合にエラーメッセージを表示する目的で使用します。
例えば、入力が必須のテキストフィールドが空のままフォームが送信された場合に、そのテキストフィールドの直下に「この項目は省略できません」といったメッセージを表示させることができます。
■UIコンポーネントへの関連付け
-
バリデータの処理で関連付ける場合
-
バリデータの処理でメッセージを関連付ける方法については、
カスタムバリデータを参照してください。
-
バリデータ以外の処理で関連付ける場合
-
javax.faces.context.FacesContext
クラスのaddMessage
メソッドを使って、
メッセージをUIコンポーネントに関連付けます。
メッセージは、javax.faces.application.FacesMessage
クラスで表します。
以下は、アクションメソッドの中でメッセージを関連付ける例です。
[addMessage
メソッドによるメッセージの関連付け]
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
...
public String buyProduct() {
...
// FacesContextを取得します。
FacesContext context = FacesContext.getCurrentInstance();
// メッセージを関連付けるUIコンポーネントを取得します。
// ここでは、id="myForm"を指定したフォームの中の、
// id="productCodeField"を指定したテキストフィールドを
// 取得しています。
UIComponent component = context.getViewRoot().findComponent("myForm:productCodeField");
// UIコンポーネントのクライアントIDを取得します。
String clientId = component.getClientId(context);
// メッセージを作成します。
FacesMessage message = new FacesMessage("存在しない商品コードです。内容を確認してください。");
// メッセージをUIコンポーネントに関連付けます。
context.addMessage(clientId, message);
...
}
|
■UIコンポーネントに関連付けたメッセージの表示
メッセージを表示するには入出力ページでh:message
タグまたはh:messages
タグを使用します。
h:message
タグは、特定のUIコンポーネントのメッセージのみ表示します。
h:messages
タグは、全てのUIコンポーネントのメッセージを表示します。
以下は、h:message
タグの使用例です。
どのUIコンポーネントに関連付けられたメッセージを表示するのかを、for
アトリビュートにコンポーネントIDで指定します。
[h:message
タグによるメッセージの表示]
<f:view>
<h:form id="myForm">
商品コード <h:inputText id="productCodeField" value="#{myBean.product}" /> <br>
<!-- 「商品コード」テキストフィールドについてのメッセージを表示します。 -->
<h:message for="productCodeField" /> <br>
個数 <h:inputText id="countField" value="#{myBean.count}" /> <br>
<!-- 「個数」テキストフィールドについてのメッセージを表示します。 -->
<h:message for="countField" /> <br>
...
<h:commandButton action="#{myBean.buyProduct}" value="購入"/>
</h:form>
</f:view>
|
全てのメッセージをまとめて1ヶ所に表示する場合は、h:messages
タグを使用します。
[h:messages
タグによるメッセージの表示]
<f:view>
<h:form id="myForm">
<!-- すべてメッセージを表示します。 -->
<h:messages />
商品コード <h:inputText id="productCodeField" value="#{myBean.product}" /> <br>
個数 <h:inputText id="countField" value="#{myBean.count}" /> <br>
...
<h:commandButton action="#{myBean.buyProduct}" value="購入"/>
</h:form>
</f:view>
|
All Rights Reserved, Copyright © 富士通株式会社 2005