如何解决Apex开发中"Method does not exist or incorrect signature"错误
问题根因
- 你定义的
conList是List<Contact>类型,仅支持存储Contact sObject对象,但循环中你向该列表插入了自定义的ContactWrapper实例,二者类型不匹配触发了方法签名不匹配的报错。 - 同时你未给
ContactWrapper的con属性赋值,就算类型匹配,返回的包装类也没有对应的联系人数据,且方法的返回类型声明也和你实际要返回的包装类列表不匹配。
修复后完整代码
public class MergeDuplicatesController { @AuraEnabled public static List<ContactWrapper> findContacts(String searchValue, Boolean selected, Boolean isPrime, Integer length) { searchValue = '%'+searchValue+'%'; List<ContactWrapper> wrapperList = new List<ContactWrapper>(); List<Contact> conList = [SELECT Name, Account.Name FROM Contact WHERE Name LIKE : searchValue]; for(Contact con : conList){ ContactWrapper wr = new ContactWrapper(); wr.isPrime = isPrime; wr.selected = selected; wr.con = con; wrapperList.add(wr); } return wrapperList; } public class ContactWrapper{ @AuraEnabled public Boolean selected; @AuraEnabled public Boolean isPrime; @AuraEnabled public Contact con; } }
核心改动说明
- 将方法返回值类型从
List<Contact>调整为List<ContactWrapper>,和实际返回的包装类列表类型对齐 - 新增
List<ContactWrapper>类型的结果列表存储包装类实例,不再往Contact类型的列表中插入非Contact对象 - 给每个
ContactWrapper实例的con属性赋值为遍历到的Contact对象,保证返回数据完整 - 最后返回包装类结果列表即可
内容的提问来源于stack exchange,提问作者Anas Ansari
相关产品推荐
相关产品推荐

