2012-07-23 8 views
5

मैंने किसी ऑब्जेक्ट के लिए कॉन्फ़िगरेशन का उपयोग करके कुछ कस्टम सत्यापन जोड़े हैं। मैं विजुअल फोर्स पेज के माध्यम से उस ऑब्जेक्ट रिकॉर्ड को सम्मिलित कर रहा हूं। मैंने अपने विजुअलफोर्स पेज पर <apex:pageMessages/> जोड़ा है। मैंने अपवाद को पकड़ने और त्रुटि संदेश ओबी वीएफ पृष्ठ दिखाने के लिए कोड ब्लॉक भी लिखा है। कृपया नीचे कोड ब्लॉक पाएं:विजुअलफोर्स पेज पर कस्टम सत्यापन से केवल निकाले गए त्रुटि संदेश को कैसे दिखाया जाए?

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

फिर भी मैं कस्टम सत्यापन से केवल त्रुटि संदेश प्राप्त करने में सक्षम नहीं हूं। यह मुझे नीचे की तरह त्रुटि दिखाता है:

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

क्या इसके लिए कोई समाधान है?

उत्तर

8

तुम इतनी तरह DML संदेश प्राप्त करने की आवश्यकता:

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

Using Exception Messages

5

सबसे अच्छा तरीका है, addMessages का उपयोग बहुवचन सूचना के लिए है। इसका केवल संदेश विवरण दिखाने का लाभ है, और थोक संचालन के लिए एक ही संदेश केवल एक बार दिखाया जाता है, और मेरा व्यक्तिगत पसंदीदा: यह केवल एक पंक्ति है, इसलिए यदि यह एक अनचाहे अपवाद है तो आपका कवरेज अधिक है।

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

यह एक अच्छा जवाब है! इस बारे में कभी नहीं पता था – 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

मिगुएल के कोड के लिए एक और स्ट्रिंग फंक्शन का उपयोग करके आप सटीक दे देंगे "सत्यापन त्रुटि संदेश" के द्वारा। धन्यवाद मिगुएल। आपके कोड ने मेरी मदद की। उम्मीद है कि यह मदद करता है।

str = errorMessage.substringBefore(':'); 
संबंधित मुद्दे