如何覆盖保存按钮以更改自定义页面?

时间:2012-11-15 09:52:26

标签: mobile salesforce apex-code visualforce

当我在commandButton中使用标准保存操作时,它每次都会进入默认页面。

但是当我点击“保存”按钮时,我想要转到自定义页面。如何?

我尝试了很多这样的事情......

public Pagereference goHome(){

Pagereference to = Apexpages.currentPage();
     to.setRedirect(true);
return to;
}

public Pagereference goHome(){

Pagereference to = new Pagereference('/apex/mypage?user=guest');    return to;
}


<apex:commandButton value="Save"  action="{!goHome}" />

2 个答案:

答案 0 :(得分:0)

应该很简单!检查此示例的工作原理(您需要通过在网址中添加?id=006...将网页关联到有效的商机。)

public class redirectTestCtrl{
    public Opportunity o {get;set;}

    public redirectTestCtrl(ApexPages.StandardController ctrl){
        o = (Opportunity)ctrl.getRecord();
    }

    public PageReference save(){
        upsert o;
        //return new PageReference('/home/home.jsp'); // go to home page
        return new PageReference('/' + o.AccountId);  // or to the related Account's page
    }
}

<apex:page standardController="Opportunity" extensions="redirectTestCtrl">
    <apex:outputField value="{!o.AccountId}" />
    <apex:form>
        <apex:inputField value="{!o.Name}" />
        <apex:commandButton value="Save" action="{!save}" />
    </apex:form>
    <span style="visibility:hidden">{!Opportunity.Name} {!Opportunity.AccountId}</span>
</apex:page>

答案 1 :(得分:0)

可以使用save()从扩展程序调用标准ApexPages.StandardController方法。以下是一个如何实现的简单示例:

Apex Page:

<apex:page standardController="Account" extensions="AccountExtension">
    <apex:form >

        <apex:pageMessages />

        <apex:pageBlock title="Account">
            <apex:pageBlockSection title="Account Details">
                <apex:inputField value="{!account.Name}" />
            </apex:pageBlockSection>

            <apex:pageBlockButtons >
                <apex:commandButton action="{!Save}" value="save" />
                <apex:commandButton action="{!Cancel}" value="cancel" />
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>

</apex:page>

扩展类:

public class AccountExtension {

    ApexPages.StandardController stdController;

    public AccountExtension(ApexPages.StandardController controller) {
        stdController = controller;
    }

    public PageReference save() {
        stdController.save(); // calling standard save() method
        return null; // return 'null' to stay on same page
    }
}