You need to sign in to do that
Don't have an account?
Display Error on VisualForce Page via a Controller Extension
I have a fairly simple VF page with an [Undelete] button that calls a method in a controller extension. If the button action fails, I want to be able to display a message at the top of the screen while still showing the original record below the message. Unfortunately, no matter what I try I get the error message but without the original record. I must be doing something wrong in setting the return for the method, but I've tried a number of different variations each with the same result, or just displaying the original message without any error.
VisualForce Page:
<apex:page standardController="DeleteLog__c" extensions="DeleteLog_extension"> <apex:pageBlock > <apex:messages /> <apex:pageBlockButtons > <apex:form > <apex:commandButton action="{!unDeleteRecord}" title="Undelete" value="Undelete"/> <apex:outputText value="{!DeleteLog__c.ObjectID__c}" rendered="false"/> </apex:form> </apex:pageBlockButtons> <apex:detail /> </apex:pageBlock> </apex:page>
Controller Extension:
public class DeleteLog_extension {
private final DeleteLog__c delLog;
private PageReference pageRef = ApexPages.currentPage();
public DeleteLog_extension(ApexPages.StandardController stdController) {
this.delLog = (DeleteLog__c)stdController.getRecord();
}
public PageReference unDeleteRecord() { Try { List<string> IDs = New List<String>(); IDs.add(this.delLog.ObjectID__c); database.undelete(IDs); PageReference obj = new PageReference('/' + delLog.ObjectID__c); obj.setRedirect(true); return obj; } Catch(DMLException ex) { string thisid = pageRef.getParameters().get('id'); System.Debug('ID =' + thisid); System.Debug('CurrentPage =' + pageRef.getUrl()); PageReference obj = new PageReference(pageRef.getUrl() + '?ID=' + thisid); System.Debug('New URL =' + obj.getUrl()); for (Integer i = 0; i < ex.getNumDml(); i++) { ApexPages.addMessage(new ApexPages.Message ApexPages.Severity.ERROR, ex.getDmlMessage(i))); } pageRef.setRedirect(false); return pageRef; }
}
Thanks,
Mike
I was able to get this to work by adding the Apex:PageMessages tag directly after the Apex:Page tag.
Mike
All Answers
I was able to get this to work by adding the Apex:PageMessages tag directly after the Apex:Page tag.
Mike
Thank you. It works for me as well.