Salesforce開発者向け:<apex:message>とその仲間たちの徹底比較


Visualforceでエラーメッセージや通知メッセージを表示するために提供される4つのコンポーネント、<apex:message><apex:messages><apex:pageMessage>、および<apex:pageMessages>には、それぞれ用途や動作に違いがあります。以下では、それぞれのコンポーネントについての詳細な違いと使用例を解説します。


1. <apex:message>

特定のコンポーネントに関連するメッセージを表示するためのコンポーネント

  • 用途: ある特定のフォームフィールド(例: 入力項目)に関連するメッセージを表示します。
  • 特徴:
    • for属性で対象のコンポーネントを指定します。
    • 単一のメッセージを表示。
    • メッセージのスタイルをカスタマイズ可能。

使用例:

<apex:page controller="ExampleController">
    <apex:form>
        <apex:inputText value="{!name}" id="nameField"/>
        <apex:message for="nameField" />
        <apex:commandButton action="{!save}" value="Save"/>
    </apex:form>
</apex:page>

2. <apex:messages>

ページ全体に関連するすべてのメッセージを一括表示

  • 用途: ページ全体で発生したすべてのメッセージ(複数可)をまとめて表示します。
  • 特徴:
    • 個別のフォームフィールドに関連しないメッセージも含む。
    • 自動的にすべてのメッセージをリスト表示。

使用例:

<apex:page controller="ExampleController">
    <apex:form>
        <apex:inputText value="{!name}" id="nameField"/>
        <apex:commandButton action="{!save}" value="Save"/>
        <apex:messages />
    </apex:form>
</apex:page>

3. <apex:pageMessage>

単一のメッセージをページの特定位置に表示

  • 用途: ページ全体の通知や、単一の重大なメッセージ(例: 成功通知や重大なエラー)を表示する。
  • 特徴:
    • severity属性でメッセージのタイプを指定可能(infowarningerrorなど)。
    • 通常、ページの上部に目立つ形で配置される。

使用例:

<apex:page>
    <apex:pageMessage summary="Operation Successful" severity="info" detail="Your record has been saved successfully." />
</apex:page>

4. <apex:pageMessages>

ページ全体のすべてのメッセージを標準的なスタイルで表示

  • 用途: 複数のエラーメッセージや通知をページ全体にわたって表示。
  • 特徴:
    • ページ全体で発生したすべてのメッセージをまとめて表示。
    • Salesforceの標準UIに合わせたデザインで表示される。

使用例:

<apex:page controller="ExampleController">
    <apex:form>
        <apex:inputText value="{!name}" id="nameField"/>
        <apex:commandButton action="{!save}" value="Save"/>
        <apex:pageMessages />
    </apex:form>
</apex:page>

違いのまとめ

コンポーネント 対象 表示内容 スタイルの自由度 主な用途
<apex:message> 特定のコンポーネント 単一のメッセージ 高い フィールド単位のエラー表示
<apex:messages> ページ全体 すべてのメッセージ 低い(リスト表示が主) 複数メッセージの一括表示
<apex:pageMessage> ページ全体(特定の通知) 単一の通知/エラー 高い 成功/警告/重大エラーの通知
<apex:pageMessages> ページ全体(標準スタイル) すべてのメッセージ 低い(標準UIに従う) Salesforce標準UIの統一感を重視

選択のポイント

  1. コンポーネント単位のエラーが必要な場合 → <apex:message>
  2. 複数メッセージを一括表示したい場合 → <apex:messages>または<apex:pageMessages>
  3. ページ全体の通知を目立たせたい場合 → <apex:pageMessage>

コメント