Search code examples
salesforceapex-codevisualforceforce.com

How to implement "Cancel" functionality in a VisualForce Page


I know that this is how to save a record

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

I want a button to NOT save the current record (ie. Cancel) and navigate to the list of saved record (ie. list of objects for that object type).

Something like this...

<apex:commandButton action="{!cancel}" value="Cancel"/>

Solution

  • The list view for an object is your base URL / the 3 letter prefix for your object / o, for example:

    https://na1.salesforce.com/a0C/o
    

    So you could just create an action method that returns a Pagereference with the appropriate URL and set to redirect (pr.setRedirect(true)).

    Alternatively, you could use your controller as an extension to a standard controller, and just call cancel on the standard controller:

    // controller extension
    public class TimeSheetExtension
    {
      ApexPages.standardController m_sc = null;
    
      public TimeSheetExtension(ApexPages.standardController sc)
      {
        m_sc = sc;
      }
    
      public PageReference doCancel()
      {
        return m_sc.cancel();
      }
    }
    
    // page
    <apex:commandButton action="{!doCancel}" value="Cancel"/>
    

    Note that this doesn't necessarily take you to the list view, it'll return you to the last page you were viewing before going to the VF page.