超出最大视图状态大小限制(135KB)

时间:2017-01-29 01:13:51

标签: salesforce visualforce apex

此代码多年来一直运作良好。

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

有谁知道为什么?

谢谢,

1 个答案:

答案 0 :(得分:1)

从这段代码片段中很难说清楚。但如果我不得不猜测。看起来你的companyToAccountMap是一个类级变量,它现在可能会返回更多的记录。如果您不需要控制器中任何其他位置的地图,我会将其移动到方法级别或使其成为瞬态。