Q>访问visualforce页面时如何修复“当前不允许DML”

时间:2015-06-29 07:36:58

标签: salesforce apex-code apex force.com dml

我编辑了我的课程并成功保存了但是当我访问使用该课程的页面时,我收到错误

目前不允许使用DML 发生意外的错误。您的开发组织已收到通知。

这是我的控制器

public class DefinitionController {

    public DefinitionController() {
        this.DefTable();
    }

    public void DefTable() {
        listplatforms = [select Name, Status__c from Platform__c];

        for (Platform__c idlistplatforms : [select Id from Platform__c]) {
            List<Def__c> existplatforms = [select Platform__c from Def__c where Platform__c = :idlistplatforms.Id];

            if (existplatforms.size() > 0) {
                idlistplatforms.Status__c = 'Set';
                //update idlistplatforms;
                System.debug('Found' + idlistplatforms);
            } else {
                idlistplatforms.Status__c = 'Not Set';
                //update idlistplatforms;
                System.debug('Not Found' + idlistplatforms);
            }
            update idlistplatforms;
        }
    }

}

我认为问题是因为更新部分。有人可以编辑我的代码,以便我将克服该错误?

提前致谢!

2 个答案:

答案 0 :(得分:2)

简而言之,类构造函数中不允许进行DML操作,因为它可能是导致危险副作用的原因。

您可以找到here

的问题的答案

答案 1 :(得分:2)

抱歉,老兄,但就像帕维尔说你不能把DML放在你的构造函数中。

你可以做的是让Visual force页面加载,然后使用Remote Action调用你的顶点来进行DML查询。

确保在jquery的document.ready中执行此操作。