在调用Web服务api时出现Salesforce错误

在调用Web服务api时出现Salesforce错误,第1张

概述当我调用函数add()时出现以下错误 您有未提交的待处理工作.请在呼叫前提交或回滚 我调用getItems()来填充下拉列表,然后调用add函数来插入下拉列表中的所选项 public PageReference add() { insert technology; return null; }public List 当我调用函数add()时出现以下错误
您有未提交的待处理工作.请在呼叫前提交或回滚

我调用getItems()来填充下拉列表,然后调用add函数来插入下拉列表中的所选项

public PageReference add() {              insert technology;              return null;            }public List<Selectoption> getItems() {    List<Selectoption> options = new List<Selectoption>();    List<Technology__c> AddedT=[SELECT name FROM Technology__c];    httpRequest req = new httpRequest();     req.setMethod('GET');    req.setEndpoint('http://submit.toolsBerry.com/sfdc/technologIEs');    http http = new http();    httpResponse res = http.send(req);      String response=res.getbody();    XmlStreamReader reader = new XmlStreamReader(response);     List<String> AllTech = new List<String>();     while(reader.hasNext()) {         if (reader.getEventType() == XmlTag.START_ELEMENT) {        if ('string' == reader.getLocalname()) {    while(reader.hasNext()) {     if (reader.getEventType() == XmlTag.END_ELEMENT) {        break;     } else if (reader.getEventType() == XmlTag.CHaraCTERS) {        String tname = reader.getText();        AllTech.add(tname);    }    reader.next(); }        }     }    reader.next(); }}
解决方法 这是因为你需要在完成任何标注后完成所有DML,而不是之前.因此任何insert / update / upsert或delete语句都必须遵循任何http.send(req);调用.

**看起来你的列表在调用add()方法后重新填充,因为你的列表存在于getter方法中**

这是特定于线程的,必须按照任何给定线程的顺序出现.因此,例如,当用户单击带有 *** 作方法的按钮时,该调用中的所有DML语句都必须遵循在同一线程中发生的任何调用.对于触发器或批处理Apex也是如此.

在某处以某种方式更新数据的getter / setter可能会导致这种情况.例如:

public String someProperty{   get   {      return [SELECT name FROM CustomObject__c WHERE ID = :this.someID];   }   set(String s)   {      CustomObject__c c = [SELECT name FROM CustomObject__C WHERE ID = :this.someID]      c.name = s;      update c;   }}

此外,永远不要在getter中添加标注.始终将callout放在一个只执行一次的显式方法中. Getter将多次被解雇,并且标注在Apex中有严格的限制.

总结

以上是内存溢出为你收集整理的在调用Web服务api时出现Salesforce错误全部内容,希望文章能够帮你解决在调用Web服务api时出现Salesforce错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1067299.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存