के साथ कस्टम सत्यापनकर्ता मेरे पास एक स्थान बनाने के लिए एक फॉर्म है। देश के आधार पर, प्रांत (राज्य, क्षेत्र) क्षेत्र की आवश्यकता है या नहीं।ग्रेल्स सशर्त नाली योग्य सत्यापन या निरर्थक विकल्प
जब आवश्यक नहीं है, तो मैं खाली होना चाहता हूं, खाली स्ट्रिंग नहीं।
def newparams = [:]
place = new Place()
params.each() { k, v ->
if (v instanceof String && place.hasProperty(k)) {
if (!v.trim().length()) {
newparams[k] = null
} else {
newparams[k] = v
}
}
}
place = new Place(newparams)
place.validate()
अब, जगह डोमेन, मैं प्रांत पर एक सत्यापनकर्ता है:: मैं कोड है कि सभी खाली प्रपत्र फ़ील्ड्स बना देता है, अशक्त है
province validator: {val, obj -> if (obj.country in obj.requiresRegionCountries() && !obj.province) return [province.required]}
इस नियम के साथ
, मैं हमेशा मिलता है "प्रांत शून्य नहीं हो सकता है "भले ही यह आवश्यक हो या नहीं।
मुझे लगता है कि ऐसा इसलिए है क्योंकि शून्य करने योग्य सत्यापनकर्ता जो गलत पर सेट है।
मैं नल द्वारा जोड़ा जा रहा है: सच है, तो भले ही प्रांत की आवश्यकता है, कस्टम सत्यापनकर्ता को छोड़ दिया जाता है और यह खाली प्रांत के साथ को बचाने के लिए संभव है (मुझे लगता है कि है, क्योंकि यह शून्य वाले instantiated हो जाता है)
अब
province validator: {val, obj ->
if (obj.country in obj.requiresRegionCountries() && !obj.province) {
nullable: false
return [province.required] }
else {
nullable: true
}
}
मैं कैसे Grails 2.0.3 में इस लक्ष्य को हासिल कर सकते हैं:, मैं किसी भी तरह अपने कस्टम सत्यापनकर्ता और भी मेरी सत्यापनकर्ता में नल निर्दिष्ट करने की क्षमता, कुछ इस तरह की जरूरत है?
आपकी प्रतिक्रिया के लिए धन्यवाद, लेकिन एक समस्या है। अगर मैं शून्य और जगह बन गया हूं। प्रोविन्स शून्य है, तो कस्टम सत्यापन पूरी तरह से छोड़ दिया जाता है। मैं कुछ देशों के लिए बेकार होना चाहता हूं लेकिन दूसरों में नहीं। – Eduard
स्पष्ट होने के लिए: यदि मैं शून्य को सही नहीं डालता हूं और दायर शून्य है, तो त्रुटि "शून्य नहीं हो सकती" त्रुटि है और मेरा कस्टम सत्यापनकर्ता निष्पादित नहीं किया गया है। अगर मैं शून्य जोड़ता हूं: सत्य और मान शून्य है, सत्यापन पास हो जाएगा, मेरा कस्टम सत्यापनकर्ता निष्पादित नहीं किया जाएगा। मैं कुछ देशों के लिए शून्य होना चाहता हूं और दूसरों के लिए शून्य नहीं हूं। यह ऐसा कुछ है जो मैं वर्तमान व्यवहार से नहीं कर सकता। – Eduard
शायद यह एक grails 2.0.3 बग है। मैं 2.0.4 चला रहा हूं और यह मेरे लिए एक साधारण डेमो प्रोजेक्ट के साथ काम कर रहा है, मैंने बनाया है कि मैं ऊपर दिए गए मेरे उत्तर में पेस्ट करूंगा ताकि आप – Tri