仅捕获验证规则中的错误消息并显示在VF页面中?

时间:2012-04-21 10:08:42

标签: salesforce visualforce

我已经设置了一些验证规则,并且我有一个使用此对象的VFpage。我能够捕获验证异常并将其显示在VF页面上。问题是它将消息显示为

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

     FIELD_CUSTOM_VALIDATION_EXCEPTION Quantity cannot be empty

有没有办法可以在验证规则“数量不能为空”中捕获错误消息?

由于

3 个答案:

答案 0 :(得分:6)

不幸的是,Ralph的帖子并非100%正确(请参阅Prady的评论,它不适用于页面顶部验证错误),所以我写这个答案来清除。

  1. <apex:pageMessages/>标记添加到您的网页
  2. 使用try catch封装您的DML语句,如下所示:
  3. 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的优点是,当错误由验证规则引起时,它仅打印验证规则。

答案 1 :(得分:4)

Visualforce可以为您做到这一点

  1. <apex:pageMessages/>标记添加到您的页面。 (这是显示任何错误消息的容器,如果存在)
  2. 使用try {} catch(DMLException e) {}围绕您的DML呼叫(当您捕获异常时,您将不会被重定向到错误页面,但salesforce会自动为验证失败创建“PageMes​​sage”。

答案 2 :(得分:0)

如果您使用此:

ApexPages.addMessages(e);

相反,用户将同时收到所有验证消息,而不是每次都要处理每个验证消息。