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. 用 try catch 将您的 DML 语句括起来,如下所示:
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);

取而代之的是,用户将同时收到所有验证消息,而不必一次处理每一条。

于 2014-12-09T09:12:37.747 回答