You need to sign in to do that
Don't have an account?

Error in Visualforce using the Metadata methods
Hi,
Belew is the VF page and controller using the metadata methods.And there are two errors:
-->Method does not exist or incorrect signature: void createService() from the type MetadataController
--->Variable does not exist: customField
<apex:page controller="MetadataController">
<apex:form id="form">
<apex:sectionHeader title="Metadata Demo">
<apex:pageMessages/>
<apex:actionPoller action="{!checkStatus}" interval="5" rerender="form" rendered="{!NOT(ISNULL(Result))}">
<apex:outputPanel rendered="{!ISNULL(Result)}">
<apex:commandButton value="Create Field" action="{!createField}"/>
<!--apex:commandButton value="Delete Field" action="{!deleteField}"/-->
</apex:outputPanel>
</apex:actionPoller>
</apex:sectionHeader>
</apex:form>
</apex:page>
--------------------------------------------------------------
public with sharing class MetadataController {
public MetadataService.AsyncResult result {get;set;}
public Book__c b{get;set;}
public MetadataController(){
result = new MetadataService.AsyncResult();
}
public PageReference createField()
{
// .. as per above ...
result = createService().create(new List<MetadataService.Metadata>{customField})[0];
displayStatus();
return null;
}
public PageReference checkStatus()
{
// Check status of the request
//result = createService().checkStatus(new List<String> { result.Id })[0];
displayStatus();
return null;
}
private void displayStatus()
{
// Inspect the AsyncResult and display the result
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.Info,
result.done ? 'Request completed' : 'Request in progress...'));
if(result.state == 'Error')
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.Error, result.message));
if(result.done)
result = null;
}
}
Can someone help me
Thanks in Advance
Belew is the VF page and controller using the metadata methods.And there are two errors:
-->Method does not exist or incorrect signature: void createService() from the type MetadataController
--->Variable does not exist: customField
<apex:page controller="MetadataController">
<apex:form id="form">
<apex:sectionHeader title="Metadata Demo">
<apex:pageMessages/>
<apex:actionPoller action="{!checkStatus}" interval="5" rerender="form" rendered="{!NOT(ISNULL(Result))}">
<apex:outputPanel rendered="{!ISNULL(Result)}">
<apex:commandButton value="Create Field" action="{!createField}"/>
<!--apex:commandButton value="Delete Field" action="{!deleteField}"/-->
</apex:outputPanel>
</apex:actionPoller>
</apex:sectionHeader>
</apex:form>
</apex:page>
--------------------------------------------------------------
public with sharing class MetadataController {
public MetadataService.AsyncResult result {get;set;}
public Book__c b{get;set;}
public MetadataController(){
result = new MetadataService.AsyncResult();
}
public PageReference createField()
{
// .. as per above ...
result = createService().create(new List<MetadataService.Metadata>{customField})[0];
displayStatus();
return null;
}
public PageReference checkStatus()
{
// Check status of the request
//result = createService().checkStatus(new List<String> { result.Id })[0];
displayStatus();
return null;
}
private void displayStatus()
{
// Inspect the AsyncResult and display the result
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.Info,
result.done ? 'Request completed' : 'Request in progress...'));
if(result.state == 'Error')
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.Error, result.message));
if(result.done)
result = null;
}
}
Can someone help me
Thanks in Advance
customObject.nameField = new MetadataService.CustomField();
customObject.nameField.type_x = 'Text';
customObject.nameField.label = 'Test Record';
Add this method to resolve createService() error :
public static MetadataService.MetadataPort createService(){
MetadataService.MetadataPort service = new MetadataService.MetadataPort(); service.SessionHeader = new MetadataService.SessionHeader_element();
service.SessionHeader.sessionId = UserInfo.getSessionId();
return service;
}
If this answers your query please mark this question as a solved so that it can be filtered out from unsolved questions.
code-
public class CreateObject {
public static void createObject() {
MetadataService.MetadataPort service = createService();
MetadataService.customObject customObject = new MetadataService.customObject();
customObject.fullName = 'Test__c';
customObject.label = 'Test';
customObject.pluralLabel = 'Tests';
customObject.nameField = new MetadataService.CustomField();
customObject.nameField.type_x = 'Text';
customObject.nameField.label = 'Test Record';
customObject.deploymentStatus = 'Deployed';
customObject.sharingModel = 'ReadWrite';
List<MetadataService.SaveResult> results =
service.createMetadata(
new MetadataService.Metadata[] { customObject });
handleSaveResults(results[0]);
}
}
errors
Method does not exist or incorrect signature: void createService() from the type CreateObject
Method does not exist or incorrect signature: void handleSaveResults(MetadataService.SaveResult) from the type CreateObject