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
sales force 203sales force 203 

Attempt to de-reference a null object (at standardSetController)

When I'm trying to open the VF I'm getting the error :

Attempt to de-reference a null object 
An unexpected error has occurred. Your development organization has been notified.

The following is my VF Page :
<apex:page controller="AccountTable" sidebar="false" showHeader="false" >
    <apex:form id="myform">
        <apex:pageBlock >
           Please Select A Dealer To Add As Participating Dealer : <apex:selectList value="{!regionValue}" size="1" >
           <apex:actionSupport event="onchange" action="{!dropDown}" rerender="myform"/>
           <apex:selectOptions value="{!regionOptions}"/> 
           </apex:selectList>
        </apex:pageBlock>
        <apex:pageBlock id="table" rendered="{!if(panelStopper = true,true,false)}">
            Filter 
           <p> Dealer Type     <apex:inputText value="{!dealerType}"/> </p>
           <p>  Dealer Code    <apex:inputText value="{!dealerCode}"/> </p>
            <apex:pageBlockButtons location="Bottom">
                <apex:commandButton value="Search" action="{!SearchLogic}" reRender="myform" />
            </apex:pageBlockButtons>
        </apex:pageBlock>

        <apex:outputPanel id="accounts">
            <apex:pageblock >
                <apex:pageblocktable value="{!Account}" var="cc" id="page">
                    <apex:column headerValue="Choose Account">
                        <apex:inputCheckbox value="{!cc.bool}"/>
                    </apex:column><apex:column value="{!cc.con.Name}"/>
                    <apex:column value="{!cc.con.City__c}"/>
                    <apex:column value="{!cc.con.Dealer_GC_Code__c }"/>
                    <apex:column value="{!cc.con.Phone  }"/>
                </apex:pageblocktable>
                <apex:pageBlockButtons location="Bottom">
                    <apex:commandButton value="<<" action="{!first}" reRender="accounts" />
                    <apex:commandButton value="<" action="{!previous}" reRender="accounts" />
                    <apex:commandButton value=">" action="{!next}" reRender="accounts" />
                    <apex:commandButton value=">>" action="{!last}" reRender="accounts" />
                </apex:pageBlockButtons>
                <apex:outputText >Page Number {!pageNumber} </apex:outputText>
                <apex:pageBlockButtons location="bottom">
                    <apex:commandButton value="Add" action="{!clickMe}" />
                    <apex:commandButton value="Cancel"  onclick="window.parent.box.hide()" /> 
                </apex:pageBlockButtons>
            </apex:pageblock>
        </apex:outputPanel>
        <apex:pageblock >
            <apex:outputPanel rendered="{!display}">
                <apex:pageblocktable value="{!selectedList}" var="w" >
                    <apex:column value="{!w.Name}"/>
                </apex:pageblocktable>
            </apex:outputPanel>
        </apex:pageblock>
    </apex:form>
</apex:page>

The following is my controller page :
Public class AccountTable{
    public String size { get; set; }

    //This is Our collection of the class/wrapper objects AddingParticipatingDealer 
    Public List<AddingParticipatingDealer> wrapperlist{get;set;}
    Public Integer noOfRecords{get; set;}

    // Create a new Map to verify whether the Account is already added in the Map
    Map <id,Account> SelectedAccountMap = new Map <id,Account>();

    public boolean display{get;set;}
    public list<Account> selectedList {get;set;}
    public String regionValue {get;set;}    
    public List<SelectOption> regionOptions {get;set;}
    public String dealerType {get;set;}
    public String dealerCode {get;set;} 
    public Boolean panelStopper {get;set;}

    public AccountTable(){ 
        regionOptions = new List<SelectOption>();
        regionOptions.add(new SelectOption('aid','All Dealer'));
        regionOptions.add(new SelectOption('sid','Select A Dealer'));
        panelStopper = false;
    }
    
    public ApexPages.StandardSetController setCon {get;set;}

    //Returns a list of wrapper objects for the sObjects in the current page set
    Public Void dropDown(){
        if(regionValue == 'sid' ){
            panelStopper = true;
        } 
        else{
            panelStopper = false;
        }
    }

    Public void SearchLogic(){
        Setcon = new ApexPages.StandardSetController(Database.getQueryLocator([Select Name,Dealer_Type__c,Dealer_GC_Code__c from Account Where Dealer_Type__c = :dealerType AND Dealer_GC_Code__c=:dealerCode]));
        setCon.setpagesize(10);
        noOfRecords = setCon.getResultSize();
        getAccount();
    }
    
    Public List<AddingParticipatingDealer> getAccount(){
        getSelectedAccount();
        wrapperlist = new List <AddingParticipatingDealer >();
        for(Account cc : (List<Account>)Setcon.getRecords()){ //In debug log it was showing error at this line
            AddingParticipatingDealer wrapAcc = new AddingParticipatingDealer();
            wrapAcc.con = cc;               // Holding Account
            if(SelectedAccountMap.containsKey(cc.Id)){
                wrapAcc.bool = true;    // check if Checkbox is checked in vf page    
            }
            else{
                wrapAcc.bool = false;    // Used as Checkbox in vf page, default is not selected
            }
            wrapperlist.add(wrapAcc);
        }
        return wrapperlist;
    }

    public void getSelectedAccount(){
        if(wrapperlist!=null){
            for(AddingParticipatingDealer  wr:wrapperlist){
                if(wr.bool == true){
                    SelectedAccountMap.put(wr.con.id,wr.con); // Add the selected Account id in to 
                }
                else{
                    SelectedAccountMap.remove(wr.con.id); // If you uncheck the Account, remove it from the selectedAccountMap
                }
            }

        }

    }
    
    public void first(){
        Setcon.first();
        system.debug('++++++++++++++First'+Setcon);
    }
     
     // returns the last page of records
     public void last() {
         Setcon.last();
     }
    
    // returns the previous page of records
     public void previous() {
         Setcon.previous();
     }
    
    //disable first and prev button
    public Boolean hasPrevious {
        get {
            return Setcon.getHasPrevious();
        }
        set;
    }
    
    //display the next page of records
    public void next() {
        Setcon.next();
        system.debug('++++++++++++++Next'+Setcon);
    }
    
    //disable the next and last buttons
    public Boolean hasnext {
        get {
            return Setcon.getHasNext();
        }
        set;
    }

    public void clickMe(){
        display = true;
        getSelectedAccount();
        selectedList = SelectedAccountMap.values();
    }

    public integer pageNumber{
        get{
            return Setcon.getPageNumber();
        }
        set;
    }
    
    Public class AddingParticipatingDealer{
        Public Account con{get;set;}
        Public boolean bool{get;set;}
    }
}

I'm getting the error at line 48 column 1
Lokesh KumarLokesh Kumar
Hello,

Can you please run the below query by putting the same id that you are passing through the visual force or try to execute the query first.

Or best enable a debug log and search for null keyword and check in which line you are getting the null pointer exception.

and the reason for this type of error when we are trying to use the variable which is not initialized any value.

Thanks
Lokesh
sales force 203sales force 203
Yes you are correct, but I'm getting the error while loading the vf page. So debug log's are not running while the page is loading at firsttime.
Lokesh KumarLokesh Kumar
Hi,

Then you can get this done by start commenting your code and do some permutation combination.

Thanks
Lokesh