Salesforce 实现保存和新建按钮不工作

Salesforce 实现保存和新建按钮不工作,salesforce,extension-methods,visualforce,Salesforce,Extension Methods,Visualforce,我按照此链接在页面上创建保存和新功能 根据这一点,我做了如下工作 1.创建一个apex类Opportunity并实施扩展方法 public with sharing class Opportunity { ApexPages.standardController m_sc = null; public Opportunity(ApexPages.standardController sc) { m_sc = sc; } public Pagereference

我按照此链接在页面上创建保存和新功能

根据这一点,我做了如下工作

1.创建一个apex类Opportunity并实施扩展方法

public with sharing class Opportunity
{
  ApexPages.standardController m_sc = null;

  public Opportunity(ApexPages.standardController sc)
  {
    m_sc = sc;
  }


  public Pagereference doSaveAndNew()
  {
    SObject so = m_sc.getRecord();
    upsert so;

    string s = '/' + ('' + so.get('Id')).subString(0, 3) + '/e?';
    ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.Info, s));
    return new Pagereference(s);
  }

  }
这很好

2.创建新页面、扩展控制器、创建按钮和调用方法

<apex:page sidebar="false" standardController="Opportunity" extensions="Opportunity" >
   <apex:form >
    <apex:pageMessages />
    {!Opportunity.Name}

    <apex:commandButton action="{!doSaveAndNew}" value="Save & New"/>
  </apex:form>
   </apex:page>

{!机会。名字}
这给了我错误“未知方法”OpportunityStandardController.doSaveAndNew()

我不知道我在这个过程中遗漏了什么步骤


任何建议

APEX类扩展不应与对象名称相同 顶点类名

机会控制器
顶点页

机会年龄

代码应该是


我认为可能类名等于对象标准名会出错

,正如Joseph指出的那样,页面正在尝试访问标准控制器OpportunityStandardController.doSaveAndNew()中的方法因为扩展和标准控制器都被称为同一个东西,而且它只是在错误的类中查找,所以找不到它

您可能只需要将控制器扩展名重命名为其他名称。我通常在类名的末尾加上“Extension”,这样我就知道它的用途了。例如,可能类似于“OpportunitySaveExtension”。然后更新visualforce页面,在“Extensions”属性中引用重命名的类

extensions=“Opportunity SaveExtension”