dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

自作したVisualforceページに入力規則エラーを表示する

自分で作成したVisualforceページについては、コントローラ側でDmlExceptionを明示的にcatchしてあげないとシステムエラー画面が表示されてしまい、
開発組織にメールがとんでしまったりして何かと面倒なことになります。

で、そのための書き方。

下のように、addMessagesメソッドにcatchしたDmlExceptionをそのまま渡してあげるだけで、
入力規則エラー発生時に画面に適切に表示されるようになります。

public PageReference save() {
    try {
        // 入力規則を設定したオブジェクトを更新する
        update sObj;
    } catch (DmlException e) {
        ApexPages.addMessages(e);
    }
    return null;
}

似たようなメソッドにaddMessage(sObject)(単数形)というのがありますが、
こちらはExceptionを直接渡すことができないため次のような書き方になると思います。

for (Integer i = 0; i < e.getNumDml(); i++) {
    ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,e.getDmlMessage(i)));
}

まず、DmlExceptiongetNumDmlメソッドでエラー総数を取得し
エラー総数分ループでgetDmlMessageを呼び出すことで順番にメッセージをセットしています。

というわけで、(今回の目的では)特別な理由が無い限りaddMessagesを使用するのが良さそうです。

リファレンス

SFDC:入力規則とVisualforce - tyoshikawa1106のブログ

Salesforce Developers
↑ これは開発者ガイドに日本語もあります

Salesforce Developers

Salesforce Developers

Salesforce Developers