How to show only the retrieved error message from user check on Visualforce page?

I have added some custom checks using Configuration for the object. I am inserting this object record through the visualforce page. I added <apex:pageMessages/>visualforce to my page. I also wrote a code block in order to catch the exception and show the OB v error message. Please find the code below:

catch(DMLException excp)
{
    ApexPages.Message msg = new ApexPages.Message(Apexpages.Severity.ERROR, excp.getMessage() );
    ApexPages.addMessage(msg);  
    return null;                            
} 

However, I cannot only get the error message from user check. It shows me an error as shown below:

Paste failed. The first exception on line 0; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, error_message_from_custom_validation_comes_here

Is there any solution for this?

+5
4

DML :

ApexPages.Message msg = new ApexPages.Message(Apexpages.Severity.ERROR, excp.getdmlMessage(0) );
ApexPages.addMessage(msg);

+8

- addMessages, . , , , : , , , .

try {
    //failed dml operation
} catch(DmlException excp) {
    ApexPages.addMessages(excp);
}
+5
try{
   ...
} catch (DMLException ex){
    String errorMessage = ex.getMessage();
    Integer occurence;
    if (ex.getMessage().contains('FIELD_CUSTOM_VALIDATION_EXCEPTION')){
        occurence = errorMessage.indexOf('FIELD_CUSTOM_VALIDATION_EXCEPTION,') + 34;
        errorMessage = errorMessage.mid(occurence, errorMessage.length());
        occurence = errorMessage.lastIndexOf(':');
        errorMessage = errorMessage.mid(0, occurence);
    }
    else {
        errorMessage = ex.getMessage();
    }

    ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, errorMessage));
}
+2

Miguel, " ". , . . , .

str = errorMessage.substringBefore(':');
0

All Articles