我已经设置了一些验证规则,并且我有一个使用这个对象的 VFpage。我能够捕获验证异常并将其显示在 VF 页面上。问题是它显示消息为
" Upsert Failed : First exception on row 0: first error;
FIELD_CUSTOM_VALIDATION_EXCEPTION Quantity cannot be empty
有没有办法我可以在验证规则“数量不能为空”中捕获错误消息?
谢谢
我已经设置了一些验证规则,并且我有一个使用这个对象的 VFpage。我能够捕获验证异常并将其显示在 VF 页面上。问题是它显示消息为
" Upsert Failed : First exception on row 0: first error;
FIELD_CUSTOM_VALIDATION_EXCEPTION Quantity cannot be empty
有没有办法我可以在验证规则“数量不能为空”中捕获错误消息?
谢谢
不幸的是,Ralph 的帖子并非 100% 正确(请参阅 Prady 的评论,即它不适用于页面顶部验证错误),所以我写了这个答案来澄清。
<apex:pageMessages/>
标签添加到您的页面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
是当错误是由验证规则引起时,它只打印验证规则。
Visualforce 可以为您做到这一点
<apex:pageMessages/>
标签添加到您的页面。(这是显示任何错误消息(如果存在)的容器)try {} catch(DMLException e) {}
(当您捕获异常时,您不会被重定向到错误页面,但 salesforce 将自动为验证失败创建一个“PageMessage”。如果你使用这个:
ApexPages.addMessages(e);
取而代之的是,用户将同时收到所有验证消息,而不必一次处理每一条。