ADF Facesのメッセージ・タグについて

ADF Facesでは、ADF Faces Coreライブラリに次の2つのメッセージ・タグが用意されています。

af:messageタグ

通常、ADF Faces入力コンポーネントに関連付けられているエラー・メッセージを表示するために、コンポーネントでaf:messageタグを使用する必要はありません。これは、ADF Faces入力コンポーネントでは、デフォルトで固有メッセージの自動表示がサポートされているためです。たとえば、変換または検証エラーが発生すると、ADF Facesでは、アラート、またはコンポーネントの近くにエラー・アイコンとインライン・エラー・メッセージが自動的に表示されます。ただし、別のコンポーネントのためのメッセージを表示するにはaf:messageを使用します。次に例を示します。

次のコード・スニペットについて考えてみます。

1. simpletrueに設定されているADF Faces入力コンポーネント

<af:panelGroup layout="horizontal">
  <af:panelHorizontal>
    <af:outputLabel for="input1" value="Lucky number is: " showRequired="true"/>
    <af:inputText required="true" id="input1" value="424" simple="true">
      <af:validateRegExp pattern="[1-9][2][0-9]"/>
      <f:validateLongRange maximum="920" minimum="220"/>
    </af:inputText>
    <f:facet name="separator">
      <af:objectSpacer width="10" height="10"/>
    </f:facet>
  </af:panelHorizontal>
  <af:commandButton text="Submit"/>
  <f:facet name="separator">
    <af:objectSpacer width="10" height="10"/>
  </f:facet>
</af:panelGroup>
<af:message for="input1" tip="Enter a 3-digit number"/>    

このコードでは、無効な値が入力されるかまたは値が入力されないと、クライアント側の検証および変換が使用不可にされている場合は、ADF Facesによってコンポーネント・ラベルの横にエラー・アイコンが表示され、ヒントの下にデフォルトの詳細エラー・メッセージが表示されます。

ただし、デフォルトではクライアント側の検証および変換は使用可能です。この場合、無効な値が入力されるかまたは値が入力されないと、ADF Facesによってアラート・ボックスにデフォルトの詳細エラー・メッセージが表示されますが、メッセージの前にコンポーネント・ラベルは表示されません。エラー・メッセージの前にコンポーネント・ラベルを表示するには、(af:outputLabelaf:messageを使用するかわりに)、シンプル入力コンポーネントをpanelLabelAndMessageにラップする必要があります。後述の注意を参照してください。

インライン・エラー・メッセージおよびアラート・ボックスの図は、「ADF Facesのメッセージについて」を参照してください。

2. JSF入力コンポーネント

<af:html>
  <af:body>
    <h:form>
      <h:panelGrid columns="3">
        <h:outputLabel value="Enter a number: " for="input1"/>
        <h:inputText required="true" id="input1" value="424">
          <af:validateRegExp pattern="[1-9][2][0-9]"/>
          <f:validateLongRange maximum="920" minimum="220"/>
        </h:inputText>
        <h:commandButton value="Submit"/>
      </h:panelGrid>
      <af:message for="input1" tip="Enter your 3-digit code."/>
    </h:form>
  </af:body>
</af:html>    

入力値が無効な場合、デフォルトのエラー・メッセージがヒント・テキストの下に表示されます。コンポーネント・ラベルの横にエラー・アイコンを表示する場合は、h:outputLabelのかわりにaf:outputLabelを使用します。

af:messageタグをシンプルADF Faces入力コンポーネントまたはADF Faces以外の入力コンポーネントで使用している場合は、次に示すaf:message属性を指定する必要があります。

af:messagesタグ

ADF Facesのaf:messagesコンポーネントを使用すると、アプリケーション・ページの最上部のボックス内にメッセージ情報を表示できます。デフォルトでは、af:messagesglobalOnly属性はfalseに設定されています。これは、ADF Facesによって、現在のFacesContextで収集されたFacesMessageインスタンスから集められたすべてのメッセージが自動的に表示されることを意味します。

通常、af:messagesは、af:pageまたはaf:panelPageコンポーネントのmessagesファセットで使用します。

<af:panelPage>
  <f:facet name="messages">
    <af:messages message="The main message to display"
                 text="The text that replaces the default title." />
  </f:facet>
</af:panelPage>    

次の図に示すように、収集されたメッセージは、デフォルトのタイトルとアイコンを含んだメッセージ・ボックスに表示されます。メッセージ・ボックスのタイトルの下には、ページに対して収集されたメッセージの番号付きリストが表示されます。各コンポーネントのメッセージはコンポーネント・ラベルで始まり、このラベルはメッセージを生成したコンポーネントにリンクされています。コンポーネント・ラベルの後に、要約メッセージが表示されます。

メッセージ・ボックス。テキストの説明を参照。

次のaf:messages属性を指定できます。

注意:シンプルADF Faces入力コンポーネントと同じページでaf:messagesを使用している場合は、エラー・メッセージをメッセージ・ボックスに正しく表示するために、シンプル入力コンポーネントをpanelLabelAndMessageにラップしてください。次に例を示します。

<af:panelLabelAndMessage label="Label for the simple input component"
                         tip="Tip text here"
                         showRequired="true"
                         for="simple2">
  <af:inputText simple="true"
                required="true"
                id="simple2"
                value="424"
                label="Label for the simple input component">
    <af:validateRegExp pattern="[1-9][2][0-9]"/>
    <f:validateLongRange maximum="920" minimum="220"/>
  </af:inputText>
</af:panelLabelAndMessage>    

シンプル入力コンポーネントでのラベル属性とメッセージ属性はADF Facesでは無視されますが、このバージョンのADF Facesでは、コンポーネントで生成されたエラー・メッセージを正しく表示するために、シンプル・コンポーネントにlabel属性を設定する必要があります。


ADF Facesの変換および検証エラーについて
ADF Faces入力コンポーネントでのラベルおよびメッセージ表示のサポートについて
ADF Facesのエラー・メッセージのカスタマイズについて
ADF Facesでの1つのエラー・メッセージの表示
ADF Facesでの全要約メッセージの表示
ADF Facesシンプル入力コンポーネントのラベルおよびメッセージの表示