2012-07-23 13 views
5

Ich habe einige benutzerdefinierte Validierungen mit Konfiguration für ein Objekt hinzugefügt. Ich füge diesen Objektdatensatz über die Visualforce-Seite ein. Ich habe <apex:pageMessages/> auf meiner Visualforce-Seite hinzugefügt. Ich habe auch Code-Block für das Abfangen der Ausnahme geschrieben und die Fehlermeldung ob VF-Seite anzuzeigen. Bitte Code Block finden Sie unter:Wie wird nur die extrahierte Fehlermeldung von der benutzerdefinierten Überprüfung auf einer Visualforce-Seite angezeigt?

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

Noch bin ich nicht in der Lage, nur Fehlermeldung von der benutzerdefinierten Validierung zu erhalten. Es zeigt mir Fehler wie unten:

Insert failed. First exception on row 0; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, error_message_from_custom_validation_comes_here

Gibt es irgendeine Lösung für dieses?

Antwort

8

Sie müssen wie so die DML Nachricht erhalten:

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

Using Exception Messages

5

Der beste Weg, addMessages zu verwenden ist, den Plural bemerken. Es hat den Vorteil, nur die Nachrichtendetails anzuzeigen, und für Massenvorgänge wird dieselbe Nachricht nur einmal angezeigt, und mein persönlicher Favorit: Es ist nur eine Zeile. Wenn es sich also um eine nicht prüfbare Ausnahme handelt, ist die Abdeckung höher.

try { 
    //failed dml operation 
} catch(DmlException excp) { 
    ApexPages.addMessages(excp); 
} 
+0

das ist eine gute Antwort! wusste nie darüber – turbo2oh

2
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)); 
} 
0

Durch einen Code der mehr String-Funktion zu Miguel Verwendung finden Sie genaue „Validierung Fehlermeldung“ geben. Danke Miguel. Dein Code hat mir geholfen. Hoffe, das hilft.

str = errorMessage.substringBefore(':');