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
Satishakumar AwatiSatishakumar Awati 

Unknown function Check spelling DescribeSobjectResult getName

Hello everyone, I am trying to build a screen which dispays all objects within a salesforce organization.

This is my controller code
 
​public class MySchemaController {
    
    public List<Schema.SObjectType> getSchemaSObjectTypes(){
        List<Schema.SObjectType> sobjectTypes = Schema.getGlobalDescribe().values();
        return sobjectTypes;
    }
    
    public List<Schema.DescribeSobjectResult> getSchemaSObjectTypeResults(){
           List<Schema.DescribeSobjectResult> describeSObjectResults = new List<Schema.DescribeSobjectResult>();

         for(Schema.SObjectType objResult : getSchemaSObjectTypes()){
             describeSObjectResults.add(getSObjectResult(objResult));
         }
         
        return describeSObjectResults;
    }
    
    public Schema.DescribeSobjectResult getSObjectResult(Schema.SObjectType obj){
        Schema.DescribeSObjectResult objResult = obj.getDescribe();
        return objResult;
    }
    
    public String getSobjectResultApiName(Schema.DescribeSobjectResult objResult){
        return objResult.getName();
    }
}
And my visualforce page code is 
 
<apex:page showHeader="false" sidebar="false" controller="MySchemaController">
    <apex:form>
    	<apex:pageBlock title="Objects">
        	<apex:pageBlockTable value="{!SchemaSObjectTypeResults}" var="objResult">
            	<apex:column value="{! objResult.getName()}"/>
            </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>
While saving page code I am getting below error message.

Unknown function objResult.getName. Check spelling.

Kindly help me to get away with this error message and I am beginner to salesforce and trying to build my first visualforce page. 
Best Answer chosen by Satishakumar Awati
sfdcMonkey.comsfdcMonkey.com
hi Satishkumar, you can achieve it by using wrapper class, i have modified your code, update your vf page and controller with below code :

apex class :
public class MySchemaController {
    public List<wrapperObj> lstWrapper {get;set;}
    
    public MySchemaController(){
        List<Schema.DescribeSobjectResult> lstRes =  getSchemaSObjectTypeResults();
        lstWrapper = new List<wrapperObj>();
        for(Schema.DescribeSobjectResult res : lstRes){
            wrapperObj wrapObj = new wrapperObj();  
            wrapObj.getKeyPrefix = res.getKeyPrefix();
            wrapObj.getLabel   =  res.getLabel();           
            wrapObj.getLabelPlural = res.getLabelPlural();       
            wrapObj.getName   = res.getName();           
            wrapObj.getHasSubtypes  = res.getHasSubtypes();     
            wrapObj.getIsSubtype   = res.getIsSubtype();      
            wrapObj.isAccessible   = res.isAccessible();      
            wrapObj.isCreateable  = res.isCreateable();       
            wrapObj.isCustom   = res.isCustom();          
            wrapObj.isCustomSetting   = res.isCustomSetting();   
            wrapObj.isDeletable   = res.isDeletable();       
            wrapObj.isDeprecatedAndHidden = res.isDeprecatedAndHidden();
            wrapObj.isFeedEnabled    = res.isFeedEnabled();    
            wrapObj.isMergeable  = res.isMergeable();        
            wrapObj.isMruEnabled   = res.isMruEnabled();      
            wrapObj.isQueryable     = res.isQueryable();     
            wrapObj.isSearchable = res.isSearchable();        
            wrapObj.isUndeletable  = res.isUndeletable();      
            wrapObj.isUpdateable = res.isUpdateable();   
            lstWrapper.add(wrapObj);    
        }
    }

    public List<Schema.SObjectType> getSchemaSObjectTypes(){
        List<Schema.SObjectType> sobjectTypes = Schema.getGlobalDescribe().values();
        return sobjectTypes;
    }
    
    public List<Schema.DescribeSobjectResult> getSchemaSObjectTypeResults(){
        List<Schema.DescribeSobjectResult> describeSObjectResults = new List<Schema.DescribeSobjectResult>();
        
        for(Schema.SObjectType objResult : getSchemaSObjectTypes()){
            describeSObjectResults.add(getSObjectResult(objResult));
        }
        
        return describeSObjectResults;
    }
    
    public Schema.DescribeSobjectResult getSObjectResult(Schema.SObjectType obj){
        Schema.DescribeSObjectResult objResult = obj.getDescribe();
        return objResult;
    }
    
    public String getSobjectResultApiName(Schema.DescribeSobjectResult objResult){
        return objResult.getName();
    }
    public class wrapperObj{
        public string  getKeyPrefix         {get;set;}
        public string  getLabel             {get;set;}
        public string  getLabelPlural       {get;set;}
        public string  getName              {get;set;}
        public boolean getHasSubtypes       {get;set;}
        public boolean getIsSubtype         {get;set;}
        public boolean isAccessible         {get;set;}
        public boolean isCreateable         {get;set;}
        public boolean isCustom             {get;set;}
        public boolean isCustomSetting      {get;set;}
        public boolean isDeletable          {get;set;}
        public boolean isDeprecatedAndHidden{get;set;}
        public boolean isFeedEnabled        {get;set;}
        public boolean isMergeable          {get;set;}
        public boolean isMruEnabled         {get;set;}
        public boolean isQueryable          {get;set;}
        public boolean isSearchable         {get;set;}
        public boolean isUndeletable        {get;set;}
        public boolean isUpdateable         {get;set;}
    }   
    
}

vf page :
<apex:page showHeader="false" sidebar="false" controller="MySchemaController">
    <apex:form>
    	<apex:pageBlock title="Objects">
        	<apex:pageBlockTable value="{!lstWrapper}" var="objResult">
            	<apex:column>
                  <apex:facet name="header">Key Prefix</apex:facet>
                    {!objResult.getKeyPrefix}
                </apex:column>
                <apex:column>
                  <apex:facet name="header">API Name</apex:facet>
                    {!objResult.getName}
                </apex:column>
                <apex:column>
                  <apex:facet name="header">Label</apex:facet>
                    {!objResult.getLabel}
                </apex:column>
                <apex:column>
                  <apex:facet name="header">Plural Label</apex:facet>
                    {!objResult.getLabelPlural}
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>
output :
User-added image

Thanks, let us know if it helps you and close your query by choosing best answer if it helps you
http://sfdcmonkey.com


 

All Answers

sfdcMonkey.comsfdcMonkey.com
hi Satishkumar, you can achieve it by using wrapper class, i have modified your code, update your vf page and controller with below code :

apex class :
public class MySchemaController {
    public List<wrapperObj> lstWrapper {get;set;}
    
    public MySchemaController(){
        List<Schema.DescribeSobjectResult> lstRes =  getSchemaSObjectTypeResults();
        lstWrapper = new List<wrapperObj>();
        for(Schema.DescribeSobjectResult res : lstRes){
            wrapperObj wrapObj = new wrapperObj();  
            wrapObj.getKeyPrefix = res.getKeyPrefix();
            wrapObj.getLabel   =  res.getLabel();           
            wrapObj.getLabelPlural = res.getLabelPlural();       
            wrapObj.getName   = res.getName();           
            wrapObj.getHasSubtypes  = res.getHasSubtypes();     
            wrapObj.getIsSubtype   = res.getIsSubtype();      
            wrapObj.isAccessible   = res.isAccessible();      
            wrapObj.isCreateable  = res.isCreateable();       
            wrapObj.isCustom   = res.isCustom();          
            wrapObj.isCustomSetting   = res.isCustomSetting();   
            wrapObj.isDeletable   = res.isDeletable();       
            wrapObj.isDeprecatedAndHidden = res.isDeprecatedAndHidden();
            wrapObj.isFeedEnabled    = res.isFeedEnabled();    
            wrapObj.isMergeable  = res.isMergeable();        
            wrapObj.isMruEnabled   = res.isMruEnabled();      
            wrapObj.isQueryable     = res.isQueryable();     
            wrapObj.isSearchable = res.isSearchable();        
            wrapObj.isUndeletable  = res.isUndeletable();      
            wrapObj.isUpdateable = res.isUpdateable();   
            lstWrapper.add(wrapObj);    
        }
    }

    public List<Schema.SObjectType> getSchemaSObjectTypes(){
        List<Schema.SObjectType> sobjectTypes = Schema.getGlobalDescribe().values();
        return sobjectTypes;
    }
    
    public List<Schema.DescribeSobjectResult> getSchemaSObjectTypeResults(){
        List<Schema.DescribeSobjectResult> describeSObjectResults = new List<Schema.DescribeSobjectResult>();
        
        for(Schema.SObjectType objResult : getSchemaSObjectTypes()){
            describeSObjectResults.add(getSObjectResult(objResult));
        }
        
        return describeSObjectResults;
    }
    
    public Schema.DescribeSobjectResult getSObjectResult(Schema.SObjectType obj){
        Schema.DescribeSObjectResult objResult = obj.getDescribe();
        return objResult;
    }
    
    public String getSobjectResultApiName(Schema.DescribeSobjectResult objResult){
        return objResult.getName();
    }
    public class wrapperObj{
        public string  getKeyPrefix         {get;set;}
        public string  getLabel             {get;set;}
        public string  getLabelPlural       {get;set;}
        public string  getName              {get;set;}
        public boolean getHasSubtypes       {get;set;}
        public boolean getIsSubtype         {get;set;}
        public boolean isAccessible         {get;set;}
        public boolean isCreateable         {get;set;}
        public boolean isCustom             {get;set;}
        public boolean isCustomSetting      {get;set;}
        public boolean isDeletable          {get;set;}
        public boolean isDeprecatedAndHidden{get;set;}
        public boolean isFeedEnabled        {get;set;}
        public boolean isMergeable          {get;set;}
        public boolean isMruEnabled         {get;set;}
        public boolean isQueryable          {get;set;}
        public boolean isSearchable         {get;set;}
        public boolean isUndeletable        {get;set;}
        public boolean isUpdateable         {get;set;}
    }   
    
}

vf page :
<apex:page showHeader="false" sidebar="false" controller="MySchemaController">
    <apex:form>
    	<apex:pageBlock title="Objects">
        	<apex:pageBlockTable value="{!lstWrapper}" var="objResult">
            	<apex:column>
                  <apex:facet name="header">Key Prefix</apex:facet>
                    {!objResult.getKeyPrefix}
                </apex:column>
                <apex:column>
                  <apex:facet name="header">API Name</apex:facet>
                    {!objResult.getName}
                </apex:column>
                <apex:column>
                  <apex:facet name="header">Label</apex:facet>
                    {!objResult.getLabel}
                </apex:column>
                <apex:column>
                  <apex:facet name="header">Plural Label</apex:facet>
                    {!objResult.getLabelPlural}
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>
output :
User-added image

Thanks, let us know if it helps you and close your query by choosing best answer if it helps you
http://sfdcmonkey.com


 
This was selected as the best answer
Satishakumar AwatiSatishakumar Awati
Thanks @piyush_soni for detailed answer. I would like to know why getName()  is not accessible on vfp?
sfdcMonkey.comsfdcMonkey.com
getName() is DescribeSObjectResult Class Method, which can only access in apex class not directly in vf page,