I have custom validation rules defined on my custom employee__c object in salesforce. I use a standard controller visualforce page with custom extension to show a UI to the user for data entry. My challenge is to show the validation rule error to the user in an easy to read manner. Here is the part of the code that I have.


<apex:page standardController="Employee__c" extensions="EmployeeExtension" sidebar="false">
 <apex:sectionHeader ...
 <apex:form id=fr>
   <apex:pageMessages id="errMsg"/>
   <apex:pageBlock title="Employee Edit" mode="edit" >
    <apex:pageBlockButtons >
      <apex:commandButton action="{!mySave}" value="Save" reRender="errMsg"/>
      <apex:commandButton action="{!cancel}" value="Cancel"/>

Apex Controller

public class EmployeeExtension {
 public PageReference mySave(){
    upsert empList;
  } catch (DMLException ex) {

This shows the errors at the page top which is the way I want, but it shows twice. Here is how it will display the error at page top.

  • error_message_from_custom_validation_comes_here
  • TriggerEmployee: Exception on row 0; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, error_message_from_custom_validation_comes_here

In my entire controller I do not have any other DML operations nor do I use ApexPages.addmessage any where else. The strange thing is if I remove


while keeping the try catch block as is, then I see only

  • error_message_from_custom_validation_comes_here

I wonder why it shows the page messages in vf page even when I am not sending anything from controller. I appreciate all your responses, but I would like to see solutions not involving javascript or jquery.

  • I've experienced this as well and resolved it by using a utility method addVfpageMsg(Exception e) that first checks to see if the exception is already present in the apexPages.getMessages() list and if yes, ignores it. If no, adds the exception as an apexPages message
    – cropredy
    Jan 12, 2015 at 18:59


You must log in to answer this question.

Browse other questions tagged .