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

Salesforce 是否仅捕获验证规则中的错误消息并显示在VF页面中?,salesforce,visualforce,Salesforce,Visualforce,我已经设置了一些验证规则,并且我有一个使用这个对象的VFpage。我能够捕获验证异常并将其显示在VF页面上。问题是它将消息显示为 " Upsert Failed : First exception on row 0: first error; FIELD_CUSTOM_VALIDATION_EXCEPTION Quantity cannot be empty 是否有一种方法可以捕获验证规则“数量不能为空”中的错误消息 谢谢你,Visualforce可以帮你做这件事 将标签添加

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

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

     FIELD_CUSTOM_VALIDATION_EXCEPTION Quantity cannot be empty
是否有一种方法可以捕获验证规则“数量不能为空”中的错误消息


谢谢你,Visualforce可以帮你做这件事

将标签添加到页面中。这是显示任何错误消息(如果存在)的容器 使用try{}catchDMLException e{}环绕您的DML调用。当您捕获异常时,您将不会被重定向到错误页面,但salesforce将自动为验证失败创建一条PageMessage。
不幸的是,Ralph的帖子不是100%正确的。请看Prady的评论,它对页面顶部验证错误不起作用,所以我给clearify写了这个答案

将标签添加到页面 用try-catch将DML语句括起来,如下所示: 这将打印该语句导致的第一个DML错误,这通常是您想要的。 您也可以尝试e.getMessage,但这将显示其他信息,如更新失败。第0行id为001L000000QgmomIAB的第一个异常;第一个错误:字段\自定义\验证\异常等,这对用户不友好。e.getDmlMessage的优点是,当验证规则导致错误时,它只打印验证规则。

如果使用此选项:

ApexPages.addMessages(e);

相反,用户将同时接收所有验证消息,而不必逐个处理。

如果我们在页面顶部显示验证规则错误消息,则似乎无法捕获。如果它设置了字段apexpages.Message而不是ApexPage.Message,那么它就可以工作,但是这解决了我的问题,谢谢。谢谢你的评论,修复了。
ApexPages.addMessages(e);