0

いくつかの検証ルールを設定し、このオブジェクトを使用して VFpage を作成しました。検証例外をキャプチャして、VF ページに表示できます。問題は、メッセージが次のように表示されることです

   " Upsert Failed : First exception on row 0: first error;

     FIELD_CUSTOM_VALIDATION_EXCEPTION Quantity cannot be empty

検証ルール「数量を空にすることはできません」でエラーメッセージをキャプチャする方法はありますか?

ありがとう

4

3 に答える 3

6

残念ながら、Ralph の投稿は 100% 正しいわけではありません (ページ上部の検証エラーには機能しないという Prady のコメントを参照)。

  1. <apex:pageMessages/>ページにタグを追加 する
  2. 次のように、DML ステートメントを try catch で囲みます。
try{

update account; //or anything else

} catch(System.DmlException e) {
   ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, e.getDmlMessage(0)));
}

これにより、ステートメントが原因で発生した最初の DML エラーが出力されます。これは通常、必要なものです。e.getMessage() を試すこともできますが、これUpdate failed. First exception on row 0 with id 001L000000QgmomIAB; first error: FIELD_CUSTOM_VALIDATION_EXCEPTIONはユーザーフレンドリーではない追加情報 (など) を表示します。の利点はe.getDmlMessage、エラーが検証ルールによって引き起こされた場合に、検証ルールのみを出力することです。

于 2014-05-23T09:34:47.070 に答える
4

Visualforce でこれを実行できます

  1. <apex:pageMessages/>タグをページに追加します。(これは、存在する場合にエラー メッセージを表示するコンテナーです)
  2. DML 呼び出しを次のように囲みますtry {} catch(DMLException e) {}(例外をキャッチすると、エラー ページにリダイレクトされませんが、Salesforce は検証の失敗に対して「PageMes​​sage」を自動的に作成します。
于 2012-04-21T19:16:15.953 に答える
0

これを使用する場合:

ApexPages.addMessages(e);

代わりに、ユーザーはすべての検証メッセージを一度に 1 つずつ処理する代わりに、同時にすべての検証メッセージを受け取ります。

于 2014-12-09T09:12:37.747 に答える