function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Glen.ax1034Glen.ax1034 

Custom Button returns values to custom method of extension class

I am getting an error when saving, am I declaring the method wrong? Can I use an extension class?

 

ErrorError: action="{!savepackage}": Unknown method 'Packages__cStandardController.savepackage()' 

 

relevant code:

 

global class packageextensions {
    private final Packages__c PackageObj;
    public packageextensions (ApexPages.StandardController controller) {
        this.PackageObj= (Packages__c)controller.getSubject();
    }
    
    global static Boolean getAddDisposition(List<Product2> pproducts) {
        
        return false;
    }

 

The code that is erroring:

 

<apex:page standardController="Packages__c" extensions="packageextensions">
<apex:form >

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

</apex:form>

 

 

 

Best Answer chosen by Admin (Salesforce Developers) 
NiketNiket

try this :

 

Visualforce Page :

**************************

<apex:page standardController="Package__c" extensions="packageextension" >
<apex:form >

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

</apex:form>
</apex:page>

 

 

Controller :

****************************

 

public class packageextension {

public packageextension (ApexPages.StandardController controller) {

}

public pagereference savepackage()
{
return null;
}

}

 

I have tried it in my Developer Org and it is working.

 

Please mark it as the solution if it answers your question and if you have any question, let me know.

 

Ckeck My Blog

 

All Answers

NiketNiket

Hi ,

 

As I can see, you have not declared savepackage() method in the extension class. You need to give defination of savepackage() in extension class. Then after you will be able to use it in visualforce page.

 

Add below mention line in extension class and error would be gone :

 

public pagereference savepackage(){}

 

Please mark it as the solution if it answers your question and if you have any question, let me know.

 

Ckeck My Blog


Glen.ax1034Glen.ax1034

yeah, i changed the "getaddisposition" to "savepackage" --- still failing. i think that this is simply because i dont know how to declare the class:

 

i'm getting an error: unexpected token: 'savepackage'

 

how do i declare it, presumably above, so that it doesnt error?

 

global class packageextensions {
    private final Packages__c PackageObj;
    
    public packageextensions (ApexPages.StandardController controller) {
        this.PackageObj= (Packages__c)controller.getSubject();
        
    }
    
    public string pagereference savepackage(){
        return 'test';
    }

 

Glen.ax1034Glen.ax1034
NiketNiket

try this :

 

Visualforce Page :

**************************

<apex:page standardController="Package__c" extensions="packageextension" >
<apex:form >

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

</apex:form>
</apex:page>

 

 

Controller :

****************************

 

public class packageextension {

public packageextension (ApexPages.StandardController controller) {

}

public pagereference savepackage()
{
return null;
}

}

 

I have tried it in my Developer Org and it is working.

 

Please mark it as the solution if it answers your question and if you have any question, let me know.

 

Ckeck My Blog

 

This was selected as the best answer
Glen.ax1034Glen.ax1034

Last question. Do you know how to get back the value of an array of checkboxes? I want to create an array of checkboxes, one check box for each Packages__c sObject type that my page displays. From there, I want to run apex code to link that particular Product2 to the Package via a many:many relationship and do a few other parent.id references.

 

Do you know the correct syntax to pass just a list of Product2.id's from apex checkboxes into a class/method/function of apex?

 

Glen.ax1034Glen.ax1034

figured it out:

 

    <apex:inputCheckbox value="{!test}"/>
     <apex:commandButton action="{!savepackage}" value="Save Package"/>
</apex:form>

 

public class packageextensions {
    private final Packages__c PackageObj;
   // public pagereference savepackage(){}
    public packageextensions (ApexPages.StandardController controller) {
        this.PackageObj= (Packages__c)controller.getSubject();
        
    }
    
    
  //     public List<Product2> setgtest() {
  //    if(account == null) ppackage = new Packages__c();
  //    return ppackage;
  // }
    public boolean test{get;set;}
   public pagereference savepackage()
{
    
    test=test;
return null;
}

 

NiketNiket

Great !!