ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド
11g リリース2(11.1.2.4.0)
B66719-05
  目次へ移動
目次

前
 
次
 

19 ヒント、メッセージおよびヘルプの表示

この章では、ADF Facesコンポーネントにヒントおよびメッセージを定義および表示する方法と、様々なレベルのヘルプ情報をユーザーに提供する方法を説明します。

この章では、次の項目について説明します。

19.1 ヒントおよびメッセージの表示について

ADF Facesでは、様々な方法でアプリケーションに情報テキストを表示できます。精巧なヘルプ・システムだけでなく、簡単なヒント・テキスト、検証および変換のヒント・テキストやエラー・メッセージも作成できます。

図19-1 ADFメッセージング・コンポーネント

メッセージング・コンポーネント

ADF Facesの多くのコンポーネントではshortDesc属性がサポートされており、この属性は大部分のコンポーネントで、ユーザーがコンポーネント上にカーソルを置いたときにヒント情報を表示します。図19-2に、ツールバー・ボタンに構成されたヒントを示します。ヒントの作成の詳細は、19.2項「コンポーネントのヒントの表示」を参照してください。

図19-2 情報を表示するヒント

情報を表示するツールチップ

ヒントと同様に、EditableValueHolderコンポーネント(inputTextコンポーネントまたは選択コンポーネントなど)も、検証および変換に使用されるヒントを表示できます。検証または変換を構成すると、デフォルトのヒントにより注意ウィンドウが自動的に表示されます(詳細は、第7章「入力の検証および変換」を参照してください)。

ADF Facesでは、標準のJSFメッセージングAPIが使用されています。JSFでは、addMessage(java.lang.String clientId, FacesMessage message)メソッドを使用してFacesContextオブジェクトにFacesMessageインスタンスを追加できるようにすることで、メッセージング用の組込みのフレームワークがサポートされています。一般的に、作成できるメッセージには、addMessageメソッドに渡された任意のクライアントIDに基づいて特定のコンポーネントに関連付けられたコンポーネントレベルのメッセージと、addMessageメソッドにクライアントIDが渡されなかったためにコンポーネントに関連付けられていないグローバルレベルのメッセージの2つのタイプがあります。

EditableValueHolder ADF Facesコンポーネントで変換または検証が失敗すると、FacesContextインスタンスのメッセージ・キューにFacesMessagesオブジェクトが自動的に追加され、コンポーネントのIDが渡されます。これらのメッセージは、コンポーネントの注意ウィンドウに表示されます。ADF Facesコンポーネントには、独自のメッセージを表示できます。タグを追加する必要はありません。

FacesMessagesコンポーネントのみでなく、documentタグも、すべてのグローバルなFacesMessagesオブジェクト(関連付けられているコンポーネントIDがない)の処理および表示を行います。コンポーネント・メッセージと同じように、表示するメッセージにタグを追加する必要はありません。グローバル・メッセージ(または複数のコンポーネント・メッセージ)が作成されると、図19-3に示すように、キューのすべてのメッセージがポップアップ・ウィンドウに表示されます。

図19-3 documentにより表示されるグローバル・メッセージおよびコンポーネント・メッセージ

グローバル・メッセージおよびコンポーネント・メッセージ

また、ポップアップ・ウィンドウではなく、ページにメッセージを表示する場合は、ADF Faces messagesコンポーネントを使用できます。コンポーネントのヒントおよびメッセージ表示の詳細は、19.3項「検証および変換用のヒントとエラー・メッセージの表示」を参照してください。


ヒント:

ADF Facesには検証および変換用のメッセージがありますが、標準のJSFメッセージングAPIを使用して、キューにFacesMessagesオブジェクトを追加できます。追加すると、ADF Facesにより、メッセージ・レベルに基づいて、次のようなアイコンがメッセージとともに表示されます。

メッセージ・アイコン

コンポーネントごとに独自のメッセージを表示するかわりに、panelLabelAndMessageコンポーネントを使用してコンポーネントをグループ化し、1つの領域にメッセージを表示できます。コンポーネントをグループ化する必要がある場合に便利です。たとえば、File Explorerアプリケーションには、ユーザーが電話番号を入力するpanelLabelAndMessageコンポーネントが使用されています。電話番号入力フィールドは、実際には3つの別々のinputTextコンポーネントです。panelLabelAndMessageコンポーネントに、3つのinputTextコンポーネントがラップされています。それぞれに独自のラベルおよびメッセージを表示するかわりに、図19-8に示すように、3つのコンポーネントにはラベルとメッセージが1つずつあります。詳細は、19.4項「単一のラベルおよびメッセージを使用したコンポーネントのグループ化」を参照してください。

個々のコンポーネント・インスタンスにメッセージを構成するとともに、アプリケーション全体で再利用可能な情報を提供する個別のヘルプ・システムを作成できます。ヘルプ情報はタイプの異なるプロバイダを使用して作成し、UIコンポーネントからヘルプ・テキストを参照します。次に、ADF Facesでサポートされている3つのタイプのヘルプを示します。

19.1.1 メッセージング・コンポーネントのユースケースおよび例

通常、メッセージは、アプリケーションでエラーが発生した場合(ユーザーが互換性のない情報を入力した場合など)に表示されるエラー・メッセージのタイプと、コンポーネントの使用やページでのタスクの完了に関するヒントなどを提供する情報メッセージのタイプに分けられます。

エラー・メッセージでは、JSFメッセージングAPIが使用されます。エラー・メッセージには、メッセージが特定コンポーネントにのみ当てはまるコンポーネント・メッセージと、複数のコンポーネントやページ全体に当てはまるグローバル・メッセージの2つのタイプがあります。

デフォルトでは、noteWindowコンポーネントはコンポーネント・エラー・メッセージに使用されます。入力コンポーネントに変換や検証を構成すると、noteWindowコンポーネントに、検証および変換のヒントやエラーが自動的に表示されます。ページにコンポーネントを追加する必要はありません。

たとえば、File Explorerアプリケーションでユーザーが「Help」 > 「Give Feedback」をクリックすると、カスタマ・サービスの担当者が連絡する日時を入力可能なダイアログが表示されます。inputDateコンポーネントにはコンバータが含まれているため、ユーザーがフィールドをクリックすると、図19-7に示すように、予想されるパターンを示すヒントが注意ウィンドウに表示されます。inputDateコンポーネントに最小値または最大値も構成されている場合は、その情報もヒントに表示されます。これらのヒントは、コンバータおよびバリデータにより自動的に表示されます。

図19-7 アタッチされている、メッセージを含むコンバータおよびバリデータ

コンバータおよびバリデータ内のメッセージ

図19-7に表示されているフィールドにユーザーが不適切な日付を入力した場合、図19-8に示すようにエラー・メッセージが表示されます。エラー・メッセージは、ヒントともに注意ウィンドウに表示されることに注意してください。

図19-8 注意ウィンドウに表示されている検証および変換のエラー

注意ウィンドウにエラーが表示されています

ADF Facesコンポーネント以外にエラー・メッセージを表示する場合、または注意ウィンドウではなく、インラインでメッセージを表示する場合は、ADF Faces messageコンポーネントを使用します。このコンポーネントを使用すると、図19-9に示すように、コンポーネントの隣にメッセージが表示されます。

図19-9 messageコンポーネントを使用したメッセージのインラインでの表示

インラインで表示されたメッセージ

グローバル・メッセージはデフォルトで、図19-10に示すように、ダイアログ内に表示されます。ページにポップアップ・コンポーネントを追加する必要はありません。

図19-10 ポップアップ・ウィンドウに表示されているグローバル・メッセージ

ポップアップに表示されているグローバル・メッセージ

エラー・メッセージをページに直接表示する場合は、messagesコンポーネントを使用します。このコンポーネントを使用すると、図19-11に示すように、ページ上部のリストにメッセージが表示されます。

図19-11 messagesコンポーネントを使用した、ページへのグローバル・メッセージの表示

リストに表示されているグローバル・メッセージ

エラー・メッセージの詳細は、19.3項「検証および変換用のヒントとエラー・メッセージの表示」を参照してください。

情報メッセージは、単純なツールチップから複雑なヘルプ・システムまで多岐にわたります。ヒントまたは情報を表示するコンポーネントでヘルプ・テキストがサポートされていない場合には、ツールチップを使用する必要があります。ただし、ツールチップ・テキストは簡潔にする必要があります。より詳細な情報を表示する必要がある場合、または多数のコンポーネント・インスタンス間でテキストが再利用される場合は、ヘルプ・テキストの使用を検討してください。

ツールチップは、コンポーネントにshortDesc属性を構成して作成します。図19-12に示すように、ユーザーがコンポーネント上にカーソルを置くと、属性の値が注意ウィンドウに表示されます。

図19-12 コンポーネントのツールチップ

注意ウィンドウに表示されているツールチップ

ツールチップの詳細は、19.2項「コンポーネントのヒントの表示」を参照してください。

ツールチップに収まる以上の情報を表示する必要がある場合は、定義ヘルプを使用します。定義ヘルプを構成すると、大部分のコンポーネントで、そのコンポーネントの隣にヘルプ・アイコンが表示されます。図19-13に示すように、コンポーネント上にマウスが置かれると、ヘルプ・テキストが表示されます。

図19-13 列コンポーネントの定義ヘルプ

列ヘッダーに表示されているヘルプ・アイコン

定義ヘルプの詳細は、19.5項「コンポーネントへのヘルプの表示」を参照してください。

フィールドレベル・ヘルプを表示する場合は、説明テキストを使用するように入力コンポーネントを構成します。ユーザーがコンポーネントをクリックすると、図19-14に示すように、注意ウィンドウにヘルプ・テキストが表示されます。

図19-14 コンポーネントの説明テキスト

テキスト入力コンポーネントに表示された説明テキスト

タスクの説明を表示する場合は、コンテナ・コンポーネントに説明ヘルプを構成します。図19-15に示すように、コンポーネントのヘッダーにテキストが表示されます。

図19-15 panelHeaderコンポーネントの説明テキスト

定義ヘルプ

ベスト・プラクティス:

入力コンポーネントの説明テキストは、説明なしでは、通常のユーザーがタスクに失敗する可能性がある場合にのみ使用します。説明テキストを多用すると、ページが指示で煩雑になったり、関連するページ要素が注意ウィンドウで見えにくくなり、ユーザーの注意が散漫になったりします。


複雑なヘルプを作成する必要がある場合は、ヘルプ・アイコンを使用して、URLを介してアクセス可能な外部ヘルプ・システムにリンクできます。

説明および外部ヘルプの詳細は、19.5項「コンポーネントへのヘルプの表示」を参照してください。

19.1.2 メッセージ・コンポーネントのその他の機能

メッセージ・コンポーネントおよびヘルプ機能を実装する前に、ADF Facesのその他の機能を理解しておくと役に立ちます。また、ページにこれらのコンポーネントを追加してから、アイコンを変更するためのスキニング、アクセシビリティ、およびメッセージ・テキストを格納するためのリソース・バンドルの使用などの機能の追加が必要なことに気が付く場合もあります。次に、メッセージ・コンポーネントで使用できるその他の機能へのリンクを示します。

19.2 コンポーネントのヒントの表示

ADF Facesコンポーネントでは、ユーザーがコンポーネント上にマウスを置いた場合、shortDesc属性を使用してヒントが表示されます。入力コンポーネントでは、注意ウィンドウにヒントが表示されます。その他のコンポーネント・タイプでは、標準のヒント・ボックスにヒントが表示されます。このテキストは短くする必要があります。より詳細な情報を表示する必要がある場合、または多数のコンポーネント・インスタンス間でテキストが再利用される場合は、19.5項「コンポーネントへのヘルプの表示」で説明されているように、ヘルプ・テキストの使用を検討してください。

図19-16に、inputTextコンポーネント上にカーソルが置かれた際の様子を示します。

図19-16 inputTextコンポーネントのヒント

ブラウザで表示したツールチップ

図19-17に、showDetailItemコンポーネントに表示されたヒントを示します。

図19-17 showDetailItemコンポーネントのヒント

コマンド・コンポーネントのヒント

19.2.1 コンポーネントへのヒントの表示方法

ヒントを表示するには、コンポーネントにshortDesc属性を使用します。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.2項「コンポーネントへのヒントの表示」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

コンポーネントにヒントを定義する手順:

  1. 構造ウィンドウで、ヒントを表示するコンポーネントを選択します。

  2. プロパティ・インスペクタで、「外観」セクションを開き、shortDesc属性に値を入力します。


    ヒント:

    80文字を超えると、ブラウザによってはヒントが切り捨てられてしまうため、値は80文字未満にする必要があります。


    使用するテキストがリソース・バンドルに格納されている場合は、ドロップダウン・リストを使用して「テキスト・リソースの選択」を選択します。「テキスト・リソースの選択」ダイアログを使用して、既存のバンドル内の適切なテキストを検索するか、既存のバンドル内に新しいエントリを作成します。リソース・バンドルの使用方法の詳細は、第29章「ページの国際化およびローカライズ」を参照してください。

19.3 検証および変換用のヒントとエラー・メッセージの表示

バリデータおよびコンバータには、関連するフィールドがクリックされた際にユーザーに表示されるデフォルトのヒントがあります。コンバータの場合、ヒントは、使用する適切な書式をユーザーに示します。バリデータの場合、ヒントは有効な値を示すために使用されます。

たとえば、図19-18に示すように、File Explorerアプリケーションでは、ユーザーがカスタマ・サービスに連絡ページの日付入力フィールドをクリックすると、使用する正しい書式が示されたヒントが表示されます。

図19-18 組込みメッセージのあるバリデータおよびコンバータ

メッセージはコンバータ・パターンに基づいています

ADF Facesコンポーネントの値が検証に失敗した場合、またはコンバータで変換できない場合は、コンポーネントに結果のFacesMessageインスタンスが表示されます。

たとえば、図19-19に示されているように、コンバータのdateStyle属性に一致しない日付を入力すると、エラー・メッセージが表示されます。

図19-19 実行時の検証エラー

ブラウザに表示された検証エラー

デフォルトのバリデータおよびコンバータのヒントとエラー・メッセージを、1つのコンポーネント・インスタンスに対して、またはすべてのインスタンスに対してグローバルにオーバーライドできます。コンポーネント・インスタンスにカスタム・メッセージを定義するには、表示する詳細なメッセージに属性を設定します。実際の属性は、バリデータまたはコンバータによって異なります。図19-20に、プロパティ・インスペクタに表示されているconvertDateTimeコンバータのメッセージをオーバーライドするために移入できる属性を示します。

図19-20 コンバータのメッセージ属性

convertDateTimeのメッセージ属性

コンポーネントのすべてのインスタンスで使用されるエラー・メッセージを定義するには、デフォルト・メッセージをオーバーライドするリソース・バンドルにエントリを作成する必要があります。

注意ウィンドウにメッセージを表示しない場合は、messageコンポーネントを使用すると、メッセージがコンポーネントにインラインで表示されます。図19-21に、messageコンポーネントを使用してメッセージがどのように表示されるかを示します。

図19-21 messageコンポーネントを使用したメッセージのインラインでの表示

インラインで表示されたメッセージ

ADF FacesアプリケーションのJSFページでは、特にポップアップ・ウィンドウへのすべてのグローバル・メッセージ(コンポーネントに関連付けられていないメッセージ)の表示を処理するdocumentタグが使用されています。ただし、グローバル・メッセージをページに表示する場合は、messagesコンポーネントを使用します。

19.3.1 コンポーネント・インスタンスへのバリデータおよびコンバータのカスタム・メッセージの定義方法

単一のコンポーネント・インスタンスのデフォルトのバリデータおよびコンバータのメッセージをオーバーライドするには、異なるメッセージ属性に値を設定します。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.3項「検証および変換用のヒントとエラー・メッセージの表示」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

バリデータまたはコンバータのメッセージを定義する手順:

  1. 構造ウィンドウで、エラー・メッセージを作成するコンバータまたはバリデータを選択します。


    注意:

    オーバーライドできるのは、ADF Facesコンポーネントのメッセージのみです。ADF Faces以外のコンポーネント(f:validatorコンポーネントなど)にメッセージを作成する場合は、messageコンポーネントを使用します。詳細は、19.3.3項「コンポーネントのメッセージをインラインで表示する方法」を参照してください。


  2. プロパティ・インスペクタで、「メッセージ」セクションを開き、メッセージを指定する属性の値を入力します。

    値には、{0}、{1}、{2}などのパラメータ・プレースホルダを使用して、動的コンテンツを含めることができます。たとえば、convertDateTimeコンバータのmessageDetailConvertDate属性には、次のパラメータが使用されます。

    • {0}: コンポーネントを識別するラベル

    • {1}: ユーザーによって入力される値

    • {2}: コンポーネントで想定される書式の例


    ヒント:

    アプリケーションで双方向または右から左への表示が使用されている場合は、Internet Explorerで正しく表示されない可能性があるため、想定される書式パラメータ(2)を使用してメッセージを開始しないでください。


    これらのパラメータを使用して、次のメッセージを作成できます。

    {1} is not using the correct date format. Please enter the date as follows: {2}. 
    

    エラー・メッセージは、図19-22のように表示されます。

    図19-22 実行時の詳細なメッセージ

    ブラウザに表示されたインラインの詳細なメッセージ

    ヒント:

    メッセージで使用されたパラメータを含むプロパティ・ヘルプを表示するには、ドロップダウン・メニューを使用します。


    使用するテキストがリソース・バンドルに格納されている場合は、ドロップダウン・リストを使用して「テキスト・リソースの選択」を選択します。「テキスト・リソースの選択」ダイアログを使用して、既存のバンドル内の適切なテキストを検索するか、既存のバンドル内に新しいエントリを作成します。リソース・バンドルの使用方法の詳細は、第29章「ページの国際化およびローカライズ」を参照してください。


    注意:

    メッセージ・テキストは、FacesMessageオブジェクトの詳細なメッセージ用です。サマリー(メッセージの上部に表示されるテキスト)をオーバーライドする場合は、グローバルにのみ実行できます。詳細は、19.3.2項「コンポーネントの全インスタンスのバリデータおよびコンバータのカスタム・メッセージの定義方法」を参照してください。


19.3.2 コンポーネントの全インスタンスのバリデータおよびコンバータのカスタム・メッセージの定義方法

messageDetail[XYZ]属性を使用してコンポーネント・インスタンスごとにメッセージの文字列を変更するかわりに、カスタム文字列がすべてのインスタンスに表示されるように文字列をグローバルにオーバーライドできます。グローバル・メッセージは、メッセージ・バンドルのキーと値のペアによって処理されます。サマリー、詳細およびヒント・メッセージをオーバーライドできます。

デフォルトのバリデータまたはコンバータのメッセージをグローバルにオーバーライドする手順:

  1. オーバーライドするメッセージのメッセージ・キーを定義するには、付録B「コンバータおよびバリデータ・メッセージのメッセージ・キー」を参照してください。たとえば、入力値が最大の値の長さを超えた場合に表示される詳細メッセージをオーバーライドするには、B.3.8項「af:validateLength」に示すように、キーorg.apache.myfaces.trinidad.validator.LengthValidator. MAXIMUM_detailを使用します。

  2. メッセージ・バンドルを作成するか開きます。メッセージ・バンドルの作成手順は、29.3.1項「ベース・リソース・バンドルの定義方法」を参照してください。

  3. メッセージ・バンドルにキー・オーバーライドを追加します。たとえば、入力値の長さに関するメッセージをオーバーライドするには、次のような内容を追加します。

    org.apache.myfaces.trinidad.validator.LengthValidator.MAXIMUM_detail: Your value exceeds the limit.
    
  4. メッセージ・バンドルが新規リソース・バンドルである場合、29.3.3項「アプリケーションへのロケールおよびリソース・バンドルの登録方法」の手順に従い、faces-config.xmlファイルを使用して、バンドルをアプリケーションに登録する必要があります。ただし、<resource-bundle>タグではなく、<message-bundle>タグを使用します。

19.3.3 コンポーネントのメッセージをインラインで表示する方法

コンポーネントで注意ウィンドウにメッセージを表示するかわりに、messageコンポーネントを使用して、ページにインラインでメッセージを表示できます。messageコンポーネントで正しいメッセージが表示されるようにするには、特定のコンポーネントと関連付けます。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.3項「検証および変換用のヒントとエラー・メッセージの表示」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

コンポーネントのメッセージをインラインで表示する手順:

  1. 構造ウィンドウで、messagesコンポーネントを使用してメッセージを表示するコンポーネントを選択します。まだ設定されていない場合は、コンポーネントのIDを入力します。

  2. コンポーネント・パレットで、「テキストおよび選択」パネルから「メッセージ」をドラッグし、メッセージを表示するページの場所にドロップします。

  3. ドロップダウン・メニューを使用してfor属性に「編集」を選択します。

  4. 「プロパティの編集」ダイアログで、messagesコンポーネントでメッセージを表示するコンポーネントを探します。IDの設定されているコンポーネントのみが有効な選択肢です。


    注意:

    表示されるメッセージ・アイコンとメッセージ・コンテンツは、FacesMessageオブジェクトの作成時に指定されたものに基づきます。messageコンポーネントにmessageTypeまたはmessage属性を設定すると、エラーが発生したかどうかに関係なく、実行時にmessageTypeまたはmessage属性の値が表示されます。これらの属性は、ページのレンダリング時に必ずコンテンツを表示する場合にのみ移入します。


19.3.4 グローバル・メッセージをインラインで表示する方法

グローバル・メッセージをページのポップアップ・ウィンドウに表示するかわりに、messagesコンポーネントを使用してインラインで表示します。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.3項「検証および変換用のヒントとエラー・メッセージの表示」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

グローバル・メッセージをインラインで表示する手順:

  1. コンポーネント・パレットで、「テキストおよび選択」パネルから「メッセージ」をドラッグし、メッセージを表示するページの場所にドロップします。

  2. プロパティ・インスペクタで次の属性を設定します。

    • globalOnly: デフォルトでは、ADF Facesはグローバル・メッセージ(コンポーネントに関連付けられていないメッセージ)を表示し、次に個々のコンポーネントのメッセージを表示します。ボックスにグローバル・メッセージのみを表示する場合は、この属性をtrueに設定します。コンポーネント・メッセージは、関連付けられたコンポーネントに引き続き表示されます。

    • inline: ページの上部にメッセージを表示する場合にtrueに設定します。設定しない場合、メッセージはダイアログに表示されます。

19.4 単一のラベルおよびメッセージを使用したコンポーネントのグループ化

ADF Facesの入力および選択コンポーネントには、デフォルトで、ラベルおよびメッセージの表示用に組込みサポートが用意されています。コンポーネントをグループ化して単一のラベルを使用する場合は、panelLabelAndMessageコンポーネントを使用してコンポーネントをラップします。

たとえば、File Explorerアプリケーションでは、別々のinputTextコンポーネントを4つ(市外局番、市内局番、最後の4桁、および内線のそれぞれに1つずつ)使用して電話番号を収集します。単一のラベルが必要なため、4つのinputTextコンポーネントはpanelLabelAndMessageコンポーネントにラップされ、ラベルの値はそのコンポーネントに設定されます。ただし、内線の入力コンポーネントには追加のラベルが必要なため、outputTextコンポーネントが使用されます。例19-1に、panelLabelAndMessageコンポーネントのJSFコードを示します。

例19-1 単一のラベルおよびヘルプ・トピックの表示が可能なpanelLabelAndMessage

<af:panelLabelAndMessage labelAndAccessKey="#{explorerBundle['help.telephone']}"
                         helpTopicId="HELP_TELEPHONE_NUMBER"
                         labelStyle="vertical-align: top;  
                         padding-top: 0.2em;">
  <af:inputText autoTab="true" simple="true" maximumLength="3"
                columns="3">
    <af:convertNumber type="number" integerOnly="true"/>
  </af:inputText>
  <af:inputText autoTab="true" simple="true" maximumLength="3"
                columns="3">
    <af:convertNumber type="number" integerOnly="true"/>
  </af:inputText>
  <af:inputText autoTab="true" simple="true" maximumLength="4"
                columns="4">
    <af:convertNumber type="number" integerOnly="true"/>
  </af:inputText>
  <af:outputText value="#{explorerBundle['help.extension']}"/>
  <af:inputText simple="true" columns="4">
    <af:convertNumber type="number" integerOnly="true"/>
  </af:inputText>
</af:panelLabelAndMessage>

図19-23に、panelLabelAndMessageおよびネストしたコンポーネントがブラウザにどのように表示されるかを示します。

図19-23 panelLabelAndMessageコンポーネントの使用例

panelLabelAndMessageの使用例

panelLabelAndMessageコンポーネントには、グループの最後に追加のコンポーネントを表示するために使用できるEndファセットも含まれます。図19-24に、EndファセットにoutputTextコンポーネントが移入されている場合に、電話番号フィールドがどのように表示されるかを示します。

図19-24 panelLabelAndMessageコンポーネント内のEndファセット

Endファセットのテキスト

panelLabelAndMessageコンポーネント内にpanelGroupLayoutコンポーネントを使用して、必要なレイアウトのコンポーネントをグループ化します。panelGroupLayoutコンポーネントの使用方法の詳細は、9.13項「関連する項目のグループ化」を参照してください。

各入力コンポーネントでsimple属性をtrueに設定し、個々のラベルが表示されないようにします。ただし、メッセージ目的およびアクセシビリティ用の各コンポーネントのラベル属性に値を設定することが必要な場合があります。


ヒント:

複数のpanelLabelAndMessageコンポーネントを連続して使用する必要がある場合には、ラベルが適切に配置されるよう、af:panelFormLayoutコンポーネントにラップします。panelFormLayoutコンポーネントの使用方法の詳細は、9.7項「フォームでのコンテンツの配置」を参照してください。


panelLabelAndMessageコンポーネントを使用して、コンポーネントをグループ化してラップします。panelLabelAndMessageコンポーネントは、通常メッセージやラベルを表示するコンポーネントのみでなく、任意のコンポーネントのラップに使用できます。

19.4.1 単一のラベルおよびメッセージを使用したコンポーネントのグループ化方法

コンポーネントをグループ化し、そのグループに単一のラベルを表示するには、panelLabelAndMessageコンポーネントを使用します。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.4項「単一のラベルおよびメッセージを使用したコンポーネントのグループ化」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

単一のラベルおよびメッセージを使用してフォーム入力コンポーネントを配置する手順:

  1. 必要に応じて、入力コンポーネントまたは選択コンポーネントをページに追加します。

    各入力および選択コンポーネントに次の設定を行います。

    • simple属性をtrueに設定します。

    • アクセシビリティの理由から、label属性をコンポーネントのラベルに設定します。

  2. 構造ウィンドウで、手順1で作成した入力コンポーネントまたは選択コンポーネントを選択します。選択内容を右クリックし、「囲む」「パネル・ラベルとメッセージ」を選択します。

  3. panelLabelAndMessageコンポーネントが選択された状態で、プロパティ・インスペクタにおいて次の設定を行います。

    • label: コンポーネントのグループに表示するラベル・テキストを入力します。

    • for: ドロップダウン・メニューを使用して「編集」を選択します。「プロパティの編集」ダイアログで、子入力コンポーネントのIDを選択します。入力コンポーネントが複数ある場合は、最初のコンポーネントを選択します。

      アクセシビリティ要件に一致するように、for属性を最初のinputComponentに設定します。

    ネストした入力コンポーネントの1つ以上が必須コンポーネントで、これを示すためにマーカーを表示する場合は、showRequired属性をtrueに設定します。

  4. Endファセットにコンテンツを配置するには、必要なコンポーネントをファセットにドラッグ・アンド・ドロップします。

    ファセットに配置できる子コンポーネントは1つのみであるため、複数の子コンポーネントを追加する場合は、panelGroupLayoutまたはgroupコンポーネントなどのコンテナで子コンポーネントをラップする必要があります。


    ヒント:

    ファセットがビジュアル・エディタに表示されない場合は、次のようにします。

    1. 構造ウィンドウで、panelLabelAndMessageコンポーネントを右クリックします。

    2. ポップアップ・メニューから、「ファセット - パネル・ラベルおよびメッセージ」→「facet name」を選択します。ページで使用されているファセットは、ファセット名の前にチェックマークが表示されます。


19.5 コンポーネントへのヘルプの表示

ADF Facesには、タイプの異なる3つのヘルプを作成および表示できるフレームワークが用意されており、そのコンテンツは、コンポーネントに構成されたテキストではなく、外部ソースから取得されます。コンテンツがコンポーネントに直接構成されず、複数のコンポーネントに使用できるため、ページ作成時間の節約になり、コンテンツが表示されるすべての場所ではなく、1箇所のコンテンツを変更することも可能です。

ADF Facesにより提供される1つ目のタイプの外部ヘルプは、定義ヘルプです。標準のヒント同様、コンテンツはメッセージ・ボックスに表示されます。ただし、ユーザーがコンポーネント上にマウスを置いた場合に表示されるのではなく、定義ヘルプではヘルプ・アイコン(疑問符が表示された青い丸)が表示されます。ユーザーがアイコン上にマウスを置くと、図19-25に示すようにコンテンツが表示されます。

図19-25 コンポーネントの定義テキスト

inputTextコンポーネントに表示されたヘルプ・テキスト

表19-1に、定義ヘルプがサポートされているコンポーネントを示します。

表19-1 定義ヘルプがサポートされているコンポーネント

サポートされているコンポーネント ヘルプ・アイコンの位置

すべての入力コンポーネント、選択コンポーネント、色の選択、日付の選択、問合せコンポーネント

ラベルの前。ラベルが存在しない場合は、フィールドの先頭。

メッセージが表示されたinputComponent


パネル・ヘッダー、パネル・ボックス、詳細の表示ヘッダー

ヘッダー・テキストの最後。

panelHeaderの定義


パネル・ウィンドウ、ダイアログ

ヘッダーの「閉じる」アイコンの隣。

右隅の「ヘルプ」アイコン

表およびツリーの列

ヘッダー・テキストの下。

列の定義



2つ目のタイプのヘルプは説明ヘルプです。説明ヘルプが表示される場所は、関連付けられているコンポーネントによって異なります。panelHeaderおよび検索パネル・コンポーネントでは、ヘッダー内に説明ヘルプが表示されます。図19-26に、図19-25に示されている、通常は定義ヘルプとして表示されるテキストが、panelHeaderコンポーネント内で説明ヘルプとしてどのように表示されるかを示します。

図19-26 panelHeaderの説明テキスト

定義ヘルプ

説明ヘルプがサポートされているその他すべてのコンポーネントでは、図19-27に示すように、注意ウィンドウにテキストが表示されます。ヘルプ・アイコンは表示されないことに注意してください。

図19-27 コンポーネントの説明テキスト

テキスト入力コンポーネントに表示された説明テキスト

表19-2に、説明ヘルプがサポートされているコンポーネントを示します。

表19-2 説明ヘルプがサポートされているコンポーネント

サポートされているコンポーネント ヘルプの位置

入力コンポーネント、色の選択、日付の選択、クイック問合せ

注意ウィンドウ(フォーカスがある場合のみ)

説明ヘルプが表示されたinputComponent


コンポーネントの選択

注意ウィンドウ(マウスが置かれている場合とフォーカスがある場合)

panelHeaderの定義


パネル・ヘッダー、パネル・ボックス、問合せ

ヘッダー・テキストの下のテキスト

説明ヘルプが表示されたpanelHeader



最後のタイプのヘルプは、外部URLヘルプです。外部アプリケーションのWebページへのURLを表示しておき、ヘルプ・アイコンがクリックされると、図19-28に示すように、別のブラウザ・ウィンドウでWebページが開かれます。ヘルプ・アイコンをクリックするかわりに、JavaScriptを使用し、クライアントベースのイベントに基づいてヘルプ・ウィンドウを開くことも可能です。

図19-28 外部URLヘルプ

外部URLヘルプ

ADF Facesには、様々なヘルプ・プロバイダがあります。ResourceBundleHelpProviderヘルプ・プロバイダを使用すると、ヘルプ・コンテンツを保持するリソース・バンドルを作成できます。ELHelpProviderヘルプ・プロバイダを使用すると、マップに変換されるXLIFFファイルの作成、またはヘルプ・テキスト文字列のマップが含まれるマネージドBeanの作成が可能です。異なるヘルプ・プロバイダを組み合せて使用することもできます。また、独自のヘルプ・プロバイダ・クラスの作成も可能です。

アプリケーションにヘルプを作成するには、次のようにします。

19.5.1 リソース・バンドルベースのヘルプの作成方法

標準のリソース・バンドル・プロパティ・ファイルにヘルプ・テキストを格納し、ResourceBundleHelpProviderクラスを使用してコンテンツを送信できます。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.5項「コンポーネントへのヘルプの表示」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

リソース・バンドルベースのヘルプを作成する手順:

  1. 各ヘルプ・トピックのトピックIDおよびヘルプ・テキストを含むプロパティ・ファイルを作成します。トピックIDには次の情報が含まれている必要があります。

    • RBHELPなど、プロバイダにより使用される接頭辞

    • TELEPHONE_NUMBERなどのトピック名

    • DEFINITIONなどのヘルプ・タイプ

    たとえば、トピックIDはRBHELP_TELEPHONE_NUMBER_DEFINITIONのようになります。


    注意:

    ヘルプ・プロバイダが登録されているすべての接頭辞は一意であることが必要です。また、別の接頭辞と同じ文字で接頭辞を開始することはできません。たとえば、AABおよびACの2つの接頭辞にヘルプ・プロバイダが登録されている場合、AABCAAAACACBという接頭辞はすべて無効で、登録時に例外がスローされます。ただし、AADABなどは有効です。

    UIコンポーネントはトピック名に基づいてヘルプ・コンテンツにアクセスします。そのため、2つの異なるヘルプ・タイプに同じトピック名を使用すると(例19-2を参照)、UIコンポーネントにより、両方のヘルプ・タイプが表示されます。


    例19-2に、3つのトピックがあるリソース・バンドルの例を示します。

    例19-2 リソース・バンドル・ヘルプ

    RBHELP_CUST_SERVICE_EMAIL_DEFINITION=For security reasons, 
                         we strongly discourage the submission of credit card numbers.
    RBHELP_TELEPHONE_NUMBER_DEFINITION=We only support calling telephone numbers 
                                                    in the United States at this time.
    RBHELP_TELEPHONE_NUMBER_INSTRUCTIONS=Enter a telephone number.
    

    注意:

    外部URLのヘルプ・タイプを使用する場合は、ResourceBundleHelpProviderクラスのサブクラスを作成します。詳細は、手順3を参照してください。


  2. adf-settings.xmlファイルに、リソース・バンドルをヘルプ・プロバイダとして登録します。

    プロバイダを登録するには、META-INFディレクトリからadf-settings.xmlファイルを開き、「ソース」タブをクリックして、次の要素を追加します。

    • <help-provider>: prefix属性を使用して、UIコンポーネントがこのヘルプ・プロバイダにアクセスする際に使用する接頭辞を定義します。これは、アプリケーション内で一意であり、リソース・バンドルに使用されている接頭辞に一致する必要があります。


      注意:

      prefix属性がないか、空である場合、そのヘルプ・プロバイダは、特別なデフォルトのヘルプ・プロバイダとして登録されます。これは、その他のどのヘルプ・プロバイダとも一致しないヘルプ・トピックIDのヘルプの生成に使用されます。許可されるデフォルトのヘルプ・プロバイダは1つのみです。


    • <help-provider-class>: <help-provider>要素の子要素として作成し、oracle.adf.view.rich.help.ResourceBundleHelpProviderを入力します。

    • <property>: <help-provider>要素の子要素として作成します。プロパティは、実際のヘルプ・ソースを定義します。

    • <property-name>: <property>要素の子要素として作成し、baseNameなど、ソースの名前を入力します。

    • <value>: <property>要素の子要素として作成し、リソース・バンドルの完全修飾クラス名を入力します。たとえば、ADF Facesデモ・アプリケーションで使用されるリソース・バンドルの修飾クラス名はoracle.adfdemo.view.resource.DemoResourcesです。

    例19-3に、例19-2のリソース・バンドルが、adf-settings.xmlファイルにどのように登録されているかを示します。

    例19-3 ヘルプ・プロバイダとしてのリソース・バンドルの登録

    <adf-settings xmlns="http://xmlns.oracle.com/adf/settings">
    <adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/settings">
      <help-provider prefix="RBHELP_">
        <help-provider-class>
          oracle.adf.view.rich.help.ResourceBundleHelpProvider
        </help-provider-class>
        <property>
          <property-name>baseName</property-name>
          <value>oracle.adfdemo.view.resource.DemoResources</value>
        </property>
      </help-provider>
    </adf-faces-config>
    </adf-settings>
    
  3. 外部URLヘルプを使用する場合は、ResourceBundleHelpProviderクラスを拡張し、getExternalUrlメソッドも実装する必要があります。例19-4に、メソッドの例を示します。

    例19-4 getExternalURLメソッドのオーバーライド

    protected String getExternalUrl(FacesContext context, UIComponent component,
                                                                       String topicId)
      {
        if (topicId == null)
          return null;
        if (topicId.contains("TOPICID_ALL") ||
            topicId.contains("TOPICID_DEFN_URL") ||
            topicId.contains("TOPICID_INSTR_URL") ||
            topicId.contains("TOPICID_URL"))
          return http://www.myURL.com;
        else
          return null;
      }
    

    例19-4では、メソッドのすべてのトピックで同じURLが返されます。異なるURLを返すには、if文を個別に作成する必要があります。

    ヘルプ・アイコンからではなく、コンポーネントのクライアント・イベントに基づいて外部ウィンドウを起動する場合は、JavaScript関数を使用します。詳細は、19.5.4項「外部ヘルプ・ウィンドウを起動するためのJavaScriptの使用方法」を参照してください。

19.5.2 XLIFFベースのヘルプの作成方法

XLIFF XMLファイルにヘルプ・テキストを格納し、ELHelpProviderクラスを使用してコンテンツを送信できます。このクラスでは、XLIFFファイルが、ヘルプのテキストとして使用される文字列のマップに変換されます。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.5項「コンポーネントへのヘルプの表示」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

XLIFFヘルプを作成する手順:

  1. <body>タグ内に次の要素を使用して、ヘルプ・テキストを定義するXLIFFファイルを作成します。

    • <trans-unit>: トピックIDを入力します。このIDには、XLIFFHELP_CREDIT_CARD_DEFINITIONのように、接頭辞、トピック名およびヘルプ・タイプが含まれている必要があります。この例で、XLIFFHELPはXLIFFファイルへのアクセスに使用される接頭辞になります。CREDIT_CARDはトピック名で、DEFINITIONはヘルプ・タイプです。


      注意:

      ヘルプ・プロバイダが登録されているすべての接頭辞は一意であることが必要です。また、別の接頭辞と同じ文字で接頭辞を開始することはできません。たとえば、AABおよびACの2つの接頭辞にヘルプ・プロバイダが登録されている場合、AABCAAAACACBという接頭辞はすべて無効で、登録時に例外がスローされます。ただし、AADABなどは有効です。

      UIコンポーネントはトピック名に基づいてヘルプ・コンテンツにアクセスします。そのため、2つの異なるヘルプ・タイプに同じトピック名を使用すると(例19-5を参照)、UIコンポーネントにより、両方のヘルプ・タイプが表示されます。


    • <source>: <trans-unit>要素の直接の子要素として作成し、ヘルプ・テキストを入力します。

    • <target>: <trans-unit>要素の直接の子要素として作成し、空白のままにします。この要素は、変換されたヘルプ・テキストの保持に使用されます。

    • <note>: <trans-unit>要素の直接の子要素として作成し、ヘルプ・テキストの説明を入力します。

    例19-5に、2つのトピックを含むXLIFFファイルの例を示します。

    例19-5 XLIFFヘルプ

    <?xml version="1.0" encoding="UTF-8" ?>
    <xliff version="1.1" xmlns="urn:oasis:names:tc:xliff:document:1.1">
      <file source-language="en" original="this" datatype="xml">
        <body>
          <trans-unit id="XLIFF_CREDIT_CARD_DEFINITION">
            <source>Credit Card Definition</source>
            <target/>
            <note>Credit Card definition text.</note>
          </trans-unit>
          <trans-unit id="XLIFF_CREDIT_CARD_INSTRUCTIONS">
            <source>Credit Card Instructions</source>
            <target/>
            <note>Credit card instruction text.</note>
          </trans-unit>
        </body>
      </file>
    </xliff>
    
  2. adf-settings.xmlファイルに、XLIFFをヘルプ・プロバイダとして登録します。

    プロバイダを登録するには、META-INFディレクトリからadf-settings.xmlファイルを開き、次の要素を追加します。

    • <help-provider>: prefix属性を使用して、UIコンポーネントがこのヘルプ・プロバイダにアクセスする際に使用する接頭辞を定義します。これは、アプリケーション内で一意であり、XLIFFファイルに使用されている接頭辞に一致する必要があります。


      注意:

      prefix属性がないか、空である場合、そのヘルプ・プロバイダは、特別なデフォルトのヘルプ・プロバイダとして登録されます。これは、その他のどのヘルプ・プロバイダとも一致しないヘルプ・トピックIDのヘルプの生成に使用されます。許可されるデフォルトのヘルプ・プロバイダは1つのみです。


    • <help-provider-class>: <help-provider>要素の子要素として作成し、oracle.adf.view.rich.help.ELHelpProviderを入力します。

    • <property>: <help-provider>要素の子要素として作成します。プロパティ値は、実際のヘルプ・ソースを定義します。

    • <property-name>: <property>要素の子要素として作成し、helpSourceなど、ヘルプの名前を入力します。

    • <value>: <property>要素の子要素として作成し、#{adfBundle['project1xliff.view.Project1XliffBundle']}のように、adfBundle EL関数でラップされた、XLIFFファイルに解決されるEL式を入力します。

    例19-6に、例19-5のXLIFFファイルが、adf-settings.xmlファイルにどのように登録されているかを示します。

    例19-6 ヘルプ・プロバイダとしてのXLIFFファイルの登録

    <adf-settings xmlns="http://xmlns.oracle.com/adf/settings">
    <adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/settings">
      <help-provider prefix="XLIFF">
        <help-provider-class>
          oracle.adf.view.rich.help.ELHelpProvider
        </help-provider-class>
        <property>
          <property-name>helpSource</property-name>
          <value>#{adfBundle['project1xliff.view.Project1XliffBundle']}</value>
          </property>
        </help-provider>
      </adf-faces-config>
    </adf-settings>
    

19.5.3 マネージドBeanヘルプの作成方法

マネージドBeanヘルプを実装するには、ヘルプのテキストとして使用される文字列のマップを含むマネージドBeanを作成します。マネージドBeanヘルプ・プロバイダでは、ELHelpProviderクラスを使用してヘルプが送信されます。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.5項「コンポーネントへのヘルプの表示」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

マネージドBeanヘルプの作成方法:

  1. 文字列のマップを戻すマネージドBeanを作成しますが、例19-7に示すように、いずれもIDおよびヘルプ・トピックのコンテンツです。

    例19-7 ヘルプ・テキスト文字列のマップを戻すマネージドBean

    public class ELHelpProviderMapDemo
    {
      public ELHelpProviderMapDemo()
      {
      }
     
      /* To use the ELHelpProvider, the EL expression must point to a Map, otherwise
       * you will get a coerceToType error. */
    
      public Map<String, String> getHelpMap()
      {
        return _HELP_MAP;
      }
     
        static private final Map<String, String> _HELP_MAP = 
                                                        new HashMap<String, String>();
        static
        {
          _HELP_MAP.put("MAPHELP_CREDIT_CARD_DEFINITION", 
                                            "Map value for credit card definition");
          _HELP_MAP.put("MAPHELP_CREDIT_CARD_INSTRUCTIONS", 
                                            "Map value for credit card instructions");
          _HELP_MAP.put("MAPHELP_SHOPPING_DEFINITION", 
                                            "Map value for shopping definition");
          _HELP_MAP.put("MAPHELP_SHOPPING_INSTRUCTIONS", 
                                            "Map value for shopping instructions");
        }
     
    }
    

    最初の文字列は、MAPHELP_CREDIT_CARD_DEFINITIONのように、接頭辞、トピック名およびヘルプ・タイプが含まれている必要があります。この例で、MAPHELPはBeanへのアクセスに使用される接頭辞になります。CREDIT_CARDはトピック名で、DEFINITIONはヘルプ・タイプです。2つ目の文字列はヘルプ・テキストです。


    注意:

    ヘルプ・プロバイダが登録されているすべての接頭辞は一意であることが必要です。また、別の接頭辞と同じ文字で接頭辞を開始することはできません。たとえば、AABおよびACの2つの接頭辞にヘルプ・プロバイダが登録されている場合、AABCAAAACACBという接頭辞はすべて無効で、登録時に例外がスローされます。ただし、AADABなどは有効です。

    UIコンポーネントはトピック名に基づいてヘルプ・コンテンツにアクセスします。そのため、2つの異なるヘルプ・タイプに同じトピック名を使用すると(例19-7を参照)、UIコンポーネントにより、両方のヘルプ・タイプが表示されます。



    注意:

    外部URLヘルプを使用する場合は、ELHelpProviderクラスのサブクラスを作成します。詳細は、手順4を参照してください。


  2. faces-config.xmlファイルにマネージドBeanを登録します。例19-8に、例19-7に示されていて、faces-config.xmlファイルに登録されているBeanを示します。

    例19-8 faces-config.xmlファイルでのマネージドBeanの登録

    <managed-bean>
      <managed-bean-name>helpTranslationMap</managed-bean-name>
        <managed-bean-class>
          oracle.adfdemo.view.webapp.ELHelpProviderMapDemo
        </managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    

    マネージドBeanの使用および登録の詳細は、3.6項「マネージドBeanの作成と使用」を参照してください。

  3. adf-settings.xmlファイルに、マネージドBeanをヘルプ・プロバイダとして登録します。

    プロバイダを登録するには、META-INFディレクトリからadf-settings.xmlファイルを開き、次の要素を追加します。

    • <help-provider>: prefix属性を作成および使用して、UIコンポーネントがこのヘルプ・プロバイダにアクセスする際に使用する接頭辞を定義します。アプリケーション内で一意であることが必要です。


      注意:

      prefix属性がないか、空である場合、そのヘルプ・プロバイダは、特別なデフォルトのヘルプ・プロバイダとして登録されます。これは、その他のどのヘルプ・プロバイダとも一致しないヘルプ・トピックIDのヘルプの生成に使用されます。許可されるデフォルトのヘルプ・プロバイダは1つのみです。


    • <help-provider-class>: <help-provider>要素の子要素として作成し、手順1で作成したクラスへの完全修飾クラス・パスを入力します。

    • <property>: <help-provider>要素の子要素として作成します。プロパティは、マネージドBeanのヘルプ文字列のマップを定義します。

    • <property-name>: <property>要素の子要素として作成し、helpSourceなど、プロパティ名を入力します。

    • <value>: <property>要素の子要素として作成し、マネージドBeanのヘルプ・マップに解決されるEL式を入力します。

    例19-9に、例19-8のBeanが、adf-settings.xmlファイルにどのように登録されているかを示します。

    例19-9 ヘルプ・プロバイダとしてのマネージドBeanの登録

    <adf-settings xmlns="http://xmlns.oracle.com/adf/settings">
    <adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/settings">
       <help-provider prefix="MAPHELP_">
       <help-provider-class>
         oracle.adf.view.rich.help.ELHelpProvider
       </help-provider-class>
       <property>
         <property-name>helpSource</property-name>
         <value>#{helpTranslationMap.helpMap}</value>
       </property>
     </help-provider>
     </adf-faces-config>
    </adf-settings>
    
  4. マネージドBeanプロバイダに外部URLヘルプを使用する場合は、ELHelpProviderクラスを拡張し、getExternalUrlメソッドを実装する必要があります。例19-10に、メソッドの例を示します。

    例19-10 getExternalURLメソッドのオーバーライド

    protected String getExternalUrl(FacesContext context, UIComponent component,
                                                                       String topicId)
      {
        if (topicId == null)
          return null;
        if (topicId.contains("TOPICID_ALL") ||
            topicId.contains("TOPICID_DEFN_URL") ||
            topicId.contains("TOPICID_INSTR_URL") ||
            topicId.contains("TOPICID_URL"))
          return http://www.myURL.com;
        else
          return null;
      }
    

    例19-10では、メソッドのすべてのトピックで同じURLが返されます。異なるURLを返すには、if文を個別に作成する必要があります。

    ヘルプ・アイコンからではなく、コンポーネントのクライアント・イベントに基づいて外部ウィンドウを起動する場合は、JavaScript関数を使用します。詳細は、19.5.4項「外部ヘルプ・ウィンドウを起動するためのJavaScriptの使用方法」を参照してください。

19.5.4 外部ヘルプ・ウィンドウを起動するためのJavaScriptの使用方法

外部URLヘルプを使用する場合、デフォルトでは、ユーザーはヘルプ・アイコンをクリックしてヘルプ・ウィンドウを起動します。かわりに、特定のコンポーネントのイベントにJavaScriptとクライアント・イベント・リスナーを使用して、ヘルプ・ウィンドウを起動できます。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.5項「コンポーネントへのヘルプの表示」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

JavaScriptを使用して外部ヘルプ・ウィンドウを起動する手順:

  1. 特定のURLまたはページの起動に、launchHelp APIを使用するJavaScript関数を作成します。

    例19-11に、helpClient.jspxの起動に使用されるlaunchHelp関数を示します。

    例19-11 外部ヘルプ・ページを起動するためのJavaScript

    <af:resource type="javascript">
      function launchHelp(event)
        {
          AdfPage.PAGE.launchHelpWindow("helpClient.jspx");
        }
    </af:resource>
    
  2. 関数をコールするクライアント・イベントを含むコンポーネントをドラッグ・アンド・ドロップします。このコンポーネントのclientIdtrueに設定する必要があります。

  3. コンポーネント・パレットで、「操作」パネルから、手順2で作成したコンポーネントに、クライアント・リスナーを子としてドラッグ・アンド・ドロップします。手順1で作成した関数を起動するclientListenerを構成します。clientListenerタグの使用方法の詳細は、4.2項「クライアント・イベントのリスニング」を参照してください。

    例19-12に、helpClient.jspxページを起動するためにcommandToolbarButtonコンポーネントにクリック・イベントを設定する際に使用されるコードを示します。

    例19-12 外部ヘルプ・ウィンドウの起動に使用されるページ・コード

    <af:toolbar id="tb1">
      <af:commandToolbarButton text="Launch help window" id="ctb1"
                               icon="/images/happy_computer.gif">
        <af:clientListener method="launchHelp" type="click"/>
      </af:commandToolbarButton>
    </af:toolbar>
    <af:resource type="javascript">
      function launchHelp(event)
        {
          AdfPage.PAGE.launchHelpWindow("helpClient.jspx");
        }
    </af:resource>
    

19.5.5 Javaクラス・ヘルプ・プロバイダの作成方法

ADF Facesヘルプ・プロバイダのいずれかを使用するかわりに、独自のプロバイダを作成します。ヘルプ・プロバイダがアクセスして表示できるファイルに実際のテキストを作成します。Javaクラス・ヘルプ・プロバイダを作成するには、HelpProviderクラスを拡張します。このクラスの詳細は、ADF FacesのJavadocを参照してください。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.5項「コンポーネントへのヘルプの表示」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

Javaクラス・ヘルプ・プロバイダを作成する手順:

  1. oracle.adf.view.rich.help.HelpProviderを拡張するJavaクラスを作成します。

  2. パラメータなしでpublicコンストラクタを作成します。また、ヘルプ・トピックにアクセスして戻すロジックも実装する必要があります。

  3. このクラスは、このプロバイダの登録時にadf-settings.xmlファイルに設定されたプロパティおよび値にアクセスできます。たとえば、すべてのADF Facesプロバイダでは、プロパティを使用して、ヘルプ文字列の実際のソースが定義されます。adf-settings.xmlファイルのプロパティにアクセスするには、Stringであるプロパティを設定するメソッドを作成します。次に例を示します。

    public void setMyCustomProperty(String arg)
    
  4. プロバイダを登録するには、META-INFディレクトリからadf-settings.xmlファイルを開き、次の要素を追加します。

    • <help-provider>: prefix属性を使用して、UIコンポーネントがこのヘルプ・プロバイダにアクセスする際に使用する接頭辞を定義します。アプリケーション内で一意であることが必要です。


      注意:

      prefix属性がないか、空である場合、そのヘルプ・プロバイダは、特別なデフォルトのヘルプ・プロバイダとして登録されます。これは、その他のどのヘルプ・プロバイダとも一致しないヘルプ・トピックIDのヘルプの生成に使用されます。許可されるデフォルトのヘルプ・プロバイダは1つのみです。ヘルプ・プロバイダが登録されているすべての接頭辞は一意であることが必要です。また、別の接頭辞と同じ文字で接頭辞を開始することはできません。たとえば、AABおよびACの2つの接頭辞にヘルプ・プロバイダが登録されている場合、AABCAAAACACBという接頭辞はすべて無効で、登録時に例外がスローされます。ただし、AADABなどは有効です。


    • <help-provider-class>: <help-provider>要素の子要素として作成し、手順1で作成したクラスへの完全修飾クラス・パスを入力します。

    • <property>: <help-provider>要素の子要素として作成し、手順3で作成したメソッドの引数として使用されるプロパティの定義に使用されます。

    • <property-name>: <property>要素の子要素として作成し、プロパティ名を入力します。

    • <value>: <property>要素の子要素として作成し、プロパティ値を入力します。

    例19-13に、adf-settings.xmlファイルに登録されているヘルプ・プロバイダ・クラスの例を示します。

    例19-13 ヘルプ・プロバイダ・クラスの登録

    <adf-settings xmlns="http://xmlns.oracle.com/adf/settings">
    <adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/settings">
      <help-provider prefix="MYAPP">
        <help-provider-class>
          oracle.adfdemo.view.webapp.MyHelpProvider
        </help-provider-class>
        <property>
          <property-name>myCustomProperty</property-name>
          <value>someValue</value>
        </property>
      </help-provider>
    </adf-faces-config>
    </adf-settings>
    

19.5.6 UIコンポーネントからのヘルプ・コンテンツへのアクセス方法

コンポーネントのHelpTopicId属性を使用して、ヘルプへのアクセスおよび表示を行います。

始める前に:

属性が機能に与える影響に関する知識が役立つ場合があります。詳細は、19.5項「コンポーネントへのヘルプの表示」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、19.1.2項「メッセージ・コンポーネントのその他の機能」を参照してください。

コンポーネントからヘルプにアクセスする手順:

  1. 構造ウィンドウで、ヘルプを追加するコンポーネントを選択します。ヘルプがサポートされているコンポーネントのリストは、表19-1および表19-2を参照してください。

  2. プロパティ・インスペクタで、「外観」セクションを開き、helpTopicId属性に値を入力します。これには、適切なヘルプ・プロバイダおよびトピック名にアクセスする接頭辞が含まれている必要があります。次に示すように、その名前で登録されているすべてのヘルプ・タイプが戻されて表示されるため、ヘルプ・タイプは含めません。

    <af:inputText label="Credit Card" helpTopicId="XLIFF_CREDIT_CARD"/>
    

    この例では、例19-5のXLIFFファイルに定義されている定義ヘルプと説明ヘルプの両方が戻されます。

  3. ヘルプがサポートされていないコンポーネントにヘルプを表示する場合は、outputTextコンポーネントを追加してヘルプ・テキストを表示し、次のようにして、そのコンポーネントをヘルプ・プロバイダにバインドできます。

    <af:outputFormatted
     value="#{adfFacesContext.helpProvider['XLIFF_CREDIT_CARD'].instructions}"/>
    

    これは、説明ヘルプ・テキストにアクセスします。

19.5.7 異なるメッセージ・タイプの組合せについて

検証および変換に関するメッセージを表示する入力コンポーネントにヘルプ・メッセージを追加すると、ADF Facesにより、注意ウィンドウ内に次の順序でメッセージが表示されます。

  1. 検証および変換のエラー・メッセージ。

  2. 検証および変換のヒント。

  3. 入力および選択コンポーネントの場合のみ、説明ヘルプ。panelHeaderコンポーネントの場合、説明ヘルプは常にヘッダーの下に表示されます。

  4. shortDesc属性の値。

図19-29に、コンバータ、説明ヘルプおよびヒント・メッセージを含むinputDateコンポーネントを示します。

図19-29 一度に表示されている異なるメッセージ・タイプ

異なるメッセージ・タイプが表示されています