読者です 読者をやめる 読者になる 読者になる

なぐりがき

SalesforceからときどきIdol



Salesforce:addErrorの謎仕様

Salesforce

こうあるべきは貫きたいものです。

先日、たまたまぶち当たったので、addErrorのことをメモしておきます。
これも検索しても出てこないので。

英語サイトだと出てるのかもしれないけど、まだ読む気になれてないです(…)





まずは基本の使い方から。

オブジェクトAPI参照名.addError(エラーメッセージ)

オブジェクトAPI参照名.項目名API参照名.addError(エラーメッセージ)

画面で独自のエラーを表示したい時にApex側で記載します。トリガーでも使いたいですが、複数件くる想定でトリガーハンドラで例外処理する時はあんまり使えないと思い込んでます。
トリガーの場合はエラーオブジェクト作るか、メール送信か、ログ出力なのかなぁと漠然と思ってます。
正解はまだつかめてないというぺーぺーです(…)

それは置いておいて、上記で記載すると、Visualforce側では「inputField」のそれぞれの項目に赤枠がついて、エラーが表示されます。
また「apex:Messages」を記載していたら、そちらにも表示されます。

謎仕様だなぁと思ったのはaddErrorで2つの項目に対してそれぞれ「値を設定してください」と同じエラーメッセージを設定した場合、「apex:Messages」では1つしかエラーメッセージが表示されませんでした。
勝手にまとめられてる?みたいです。その割にapex:Messagesでの表示は「項目名:エラーメッセージ」だったんですけど。なんでやねん…、お前認識してるじゃん。
そのうちこっそり仕様が変わってることを祈ります。

ついでに「apex:Message」だったかな。こっちはオブジェクトの項目とか関係なく、メッセージを表示させたい時用?
Apex側でメッセージの種類を選んでメッセージを設定する感じでした。
混同していたので、この機会に整理できてよかったです。