すべてのエラーメッセージを表示する

Visualforceページでは、一度に1つのエラーメッセージが表示されます。すべてのフィールドで検証が失敗した場合は、すべてのエラーメッセージではありません.Belowはコントローラのコードです。頂点があります:Visualforceページのpagemessagesにエラーメッセージが表示されます。

if((newFR.Fleet_Vehicle_Maintained__c == 'No')&& (newFR.Fleet_Explanation__c == NULL )) {
          newFR.Fleet_Explanation__c.addError('If the fleet vehicle is not being maintained by the rep, an explanation is required.');
                        return null;
          }
         if((newFR.Rep_Policy__c == 'No')&& (newFR.Not_Policy_Explanation__c == NULL )) {
           newFR.Not_Policy_Explanation__c.addError('Not_Following_Policy_Explanation__c');

          return null;
          } 
          if((newFR.FR_Status__c == 'Send for Representative')&& (newFR.Review_Date__c > system.today() )) {
           newFR.Review_Date__c.addError('Review Date cannot be a future date when sending  for acknowledgement.');

          return null;
          } 
ベストアンサー

作成したコードは、最初のエラー( return null
)の後に終了します。より一般的なシナリオは、検証が失敗したときにフラグを設定し、検証の最後にフラグをチェックして処理を中止することです。

一般的な例を次に示します。

public PageReference doSomething() {
    Boolean okayToSave = true;
    if( condition1 ) {
        record.field1__c.addError(...);
        okayToSave = false;
    }
    if( condition2 ) {
        record.field2__c.addError(...);
        okayToSave = false;
    }
    if( conditionN ) {
        record.fieldN__c.addError(...);
        okayToSave = false;
    }
    if( !okayToSave ) {
        return null;
    }
   //Now save the data
    insert record;
    return Page.SuccessfulSave;
}

もちろん、try-catchブロックやその他のエラー処理を実際の保存に使用する部分は除外しました。なぜなら、説明しようとしているものとは関係がないからです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です