未知的构造函数'.......(ApexPages.StandardController控制器)'

时间:2019-09-25 06:46:56

标签: salesforce apex visualforce

未知的构造函数'.......(ApexPages.StandardController控制器)'

我是Salesforce的新手。 我正在做一个练习问题,其中我必须创建一个Visualforce页面来保存联系人详细信息,并将其显示在另一个VF页面上。

ContactDetails.vfp:

<apex:page standardController="Contact" extensions="ContactDisplayController">
    <apex:form >
        <apex:pageBlock title="Add Contact">
            <apex:pageBlockSection columns="1">
                <apex:inputField value="{! Contact.FirstName }"/>
                <apex:inputField value="{! Contact.Lastname }"/>
                <apex:inputField value="{! Contact.Phone }" />
                <apex:inputField value="{! Contact.Email }" />
                <apex:inputField value="{! Contact.Birthdate }" />
            </apex:pageBlockSection>
            <apex:pageBlockButtons >
                <apex:commandButton action="{!saveAndRedirect}" value="Save" />
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>
</apex:page>

ContactDisplay.vfp:

<apex:page standardController="Contact" extensions="ContactDisplayController">
    <apex:form >
        <apex:pageBlock title="Display Contact">
            <apex:pageBlockSection columns="1">
                <apex:outputText value="{! Contact.FirstName }"/>
                <apex:outputText value="{! Contact.Lastname }"/>
                <apex:outputText value="{! Contact.Phone }" />
                <apex:outputText value="{! Contact.Email }" />
                <apex:outputText value="{! Contact.Birthdate }" />
            </apex:pageBlockSection>
            <apex:pageBlockButtons >
                <apex:commandButton action="{!redirectToMyVF}" value="Close" />
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>
</apex:page>

ContactDisplayController.apxc:

公共类ContactDisplayController {

public Contact con { get; set; }
public ContactDisplayController(ApexPages.StandardController controller) {
}

public PageReference redirectToMyVF() {
    PageReference pref = new PageReference('/apex/Page');
    pref.setRedirect(true);
    return pref;
}

public PageReference saveAndRedirect() {
    if(controller.Save() != null) {
        //save your contact record
        controller.Save();
        //retrieve the contact record
        con = ( Contact ) controller.getRecord();
        System.debug( con );
        //pass the contact id as the URL parameter
        PageReference redirectPage = '/ContactDisplay?id=' + con.Id;
        return redirectPage;
    } 
    return null;
}

}

当我尝试保存此代码时,出现错误: 未知的构造函数'ContactDisplayController.ContactDisplayController(ApexPages.StandardController控制器)'

请让我知道这段代码有什么问题。

1 个答案:

答案 0 :(得分:0)

我不认为您的顶点类正在保存,因为它应该有一些错误,因此您的视觉页面无法找到扩展构造函数。

将ContactDisplayController类更新为以下内容,并确保首先保存它没有错误,然后再保存视觉效果页面并且应该没有错误

public class ContactDisplayController {
public Contact con { get; set; }
public ApexPages.StandardController controller {get; set;}
public ContactDisplayController(ApexPages.StandardController controller) {
        this.controller = controller;
}

public PageReference redirectToMyVF() {
PageReference pref = new PageReference('/apex/Page');
pref.setRedirect(true);
return pref;
}


public PageReference saveAndRedirect() {
    if(controller.Save() != null) {
        //save your contact record
        controller.Save();
        //retrieve the contact record
        con = ( Contact ) controller.getRecord();
        System.debug( con );
        //pass the contact id as the URL parameter
        PageReference redirectPage = new PageReference('/apex/ContactDisplay?id=' + con.Id);
        return redirectPage;
    } 
return null;
    }
}