我正在点击第
页上的创建保存和新功能的链接How to implement "Save & New" functionality in a VisualForce Page
据我所知,
1.创建一个顶级类机会并实现扩展方法
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()'”
我不知道在这个过程中我缺少了什么步骤
任何建议
答案 0 :(得分:0)
APEX类扩展名不应与对象名相同
APEX类名
OpportunityController
APEX
OpportunityPage
代码应该是
<apex:page sidebar="false" standardController="Opportunity" extensions="OpportunityController" >
我认为类名称可能与对象标准名称相同
答案 1 :(得分:0)
正如约瑟夫所指出的那样,该页面试图访问标准控制器'OpportunityStandardController.doSaveAndNew()'中的方法并且无法找到它,因为扩展和标准控制器都被称为相同的东西,它只是在查看错了。
您可能只需要将控制器扩展名重命名为其他内容。我通常在类名的末尾抛出“Extension”,所以我知道它的用途。例如,可能是“OpportunitySaveExtension”之类的东西。然后更新您的visualforce页面以在“Extensions”属性中引用重命名的类。
扩展= “OpportunitySaveExtension”