我已经设置了一些验证规则,并且我有一个使用此对象的VFpage。我能够捕获验证异常并将其显示在VF页面上。问题是它将消息显示为
" Upsert Failed : First exception on row 0: first error;
FIELD_CUSTOM_VALIDATION_EXCEPTION Quantity cannot be empty
有没有办法可以在验证规则“数量不能为空”中捕获错误消息?
由于
答案 0 :(得分:6)
不幸的是,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
的优点是,当错误由验证规则引起时,它仅打印验证规则。
答案 1 :(得分:4)
Visualforce可以为您做到这一点
<apex:pageMessages/>
标记添加到您的页面。 (这是显示任何错误消息的容器,如果存在)try {} catch(DMLException e) {}
围绕您的DML呼叫(当您捕获异常时,您将不会被重定向到错误页面,但salesforce会自动为验证失败创建“PageMessage”。答案 2 :(得分:0)
如果您使用此:
ApexPages.addMessages(e);
相反,用户将同时收到所有验证消息,而不是每次都要处理每个验证消息。