此代码多年来一直运作良好。
public PageReference chkinst() {
i=0;
integer j=0;
Set<String> aSearchSet = new Set<String>();
List<Lead> lList = ui;
for (Lead l : lList) {
aSearchSet.add(l.company);
}
Account[] accountToCreate = new Account[]{};
Map<String,Account> companyToAccountMap = new Map<String,Account> ();
for (Account a: [select id, Name from Account where name IN :aSearchSet])
companyToAccountMap.put(a.name,a);
for (Lead l : lList) {
if (!companyToAccountMap.containsKey(l.company)){
Account act = new Account(Name = l.Company , Country__c = l.Country__c );
accountToCreate.add(act);
j = j +1;
}
}
insert accountToCreate;
if(j == 0) {
ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,'All leads have correct institution names'));
} else{
ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,j + ' Institutions created'));
}
return null;
}
今天,它给了我以下错误:
超出了最大视图状态大小限制(135KB)。此页面的实际视图状态大小为135.078KB
有谁知道为什么?
谢谢,
答案 0 :(得分:1)
从这段代码片段中很难说清楚。但如果我不得不猜测。看起来你的companyToAccountMap是一个类级变量,它现在可能会返回更多的记录。如果您不需要控制器中任何其他位置的地图,我会将其移动到方法级别或使其成为瞬态。