我为这个冗长的问题道歉。
上下文: 我们有一个映射,它基本上将一个对象的字段映射到另一个对象的字段。 Object_A到Object_B。在对象A的触发器中,我们查看是否存在到对象B的映射。如果是,我们加载对象b记录并将值从A中的特定字段复制到B中的字段。在我们制作之后我们更新的所有副本B.
我们尝试了解B的更新以捕获任何异常。我们面临的问题是从Salesforce验证中抛出异常,而不是自定义验证规则并自动创建消息。例如,某人输入了123.45,并且它尝试转移到的对象b中的字段被格式化为2.0数字。这将为无效范围生成DML异常。哪个好。问题是Salesforce还向apexPages.Messages容器添加了错误。因此,如果我们在页面上有一个,它将显示Salesforce错误。
这有两个问题。 1.该消息并非真正用户友好。 2.消息包含对象B上字段的字段标签而不是对象A上的字段。此上下文中的用户将不知道该字段是什么,并且页面上可能有100个字段已填写,无法追踪它。
我宁愿SF没有自动添加消息,允许我捕获异常并格式化消息。但是我无论如何都不能阻止SF创建消息或清除消息容器以便我们可以添加自己的消息。
有没有办法阻止Salesforce自动添加邮件或清除apexPage.Messages而不刷新页面?
编辑以显示快速示例代码:
list<Contact> contacts = [Select id,Email from Contact where id='someSFId'];
contacts[0].email = 'badEmail';
try{
update contacts;
}
catch(Exception ex)
{
System.debug(Apexpages.hasMessage());
}
即使我没有添加消息,您也会看到调试结果为真。
答案 0 :(得分:0)
希望这有助于任何人。
List<ApexPages.Message> msgs = ApexPages.getMessages();
for(ApexPages.Message message : msgs ){
// get the object A field label from maaping
// construct custom error message/ replace field label string
}
答案 1 :(得分:-2)
夏季18日之后,您可以在顶点测试Intro to Python docs
中清除顶点页面消息