Salesforce 如何在Visualforce页面上仅显示自定义验证中提取的错误消息?
我使用对象的配置添加了一些自定义验证。我通过visualforce页面插入该对象记录。我在visualforce页面上添加了Salesforce 如何在Visualforce页面上仅显示自定义验证中提取的错误消息?,salesforce,apex-code,visualforce,Salesforce,Apex Code,Visualforce,我使用对象的配置添加了一些自定义验证。我通过visualforce页面插入该对象记录。我在visualforce页面上添加了。我还编写了捕获异常和显示错误消息ob VF页面的代码块。请在下面查找代码块: catch(DMLException excp) { ApexPages.Message msg = new ApexPages.Message(Apexpages.Severity.ERROR, excp.getMessage() ); ApexPages.addMessage
。我还编写了捕获异常和显示错误消息ob VF页面的代码块。请在下面查找代码块:
catch(DMLException excp)
{
ApexPages.Message msg = new ApexPages.Message(Apexpages.Severity.ERROR, excp.getMessage() );
ApexPages.addMessage(msg);
return null;
}
我仍然无法从自定义验证中获得唯一的错误消息。它向我显示了如下错误:
插入失败。第0行的第一个异常;第一个错误:
字段\自定义\验证\异常,
来自自定义验证的错误消息出现在此处
有什么解决方案吗?您需要这样获得DML消息:
ApexPages.Message msg = new ApexPages.Message(Apexpages.Severity.ERROR, excp.getdmlMessage(0) );
ApexPages.addMessage(msg);
最好的方法是使用addMessages,注意复数形式。它的优点是只显示消息的详细信息,对于批量操作,同一消息只显示一次,我个人最喜欢的是:它只有一行,因此如果它是一个不稳定的异常,您的覆盖率会更高
try {
//failed dml operation
} catch(DmlException excp) {
ApexPages.addMessages(excp);
}
通过对Miguel的代码再使用一个字符串函数,您将得到准确的“验证错误消息”。 谢谢你,米盖尔。你的代码帮助了我。 希望这有帮助
str = errorMessage.substringBefore(':');
这是一个很好的答案!我从来不知道这件事
str = errorMessage.substringBefore(':');