Bir yer oluşturmak için bir formum var. Ülkeye bağlı olarak il (eyalet, bölge) alanı gereklidir veya yapılmamaktadır.Grails koşullu nullable validasyon veya nullable seçeneği ile özel validator
Ne zaman gerekli değil, boş dizge boş değil, boş olmak istiyorum. yer etki alanında, ben ilin bir doğrulayıcı sahip, Şimdi
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()
: Ben boş tüm boş form alanlarını kılacak yöntem var hep olsun, bu kural ile
province validator: {val, obj -> if (obj.country in obj.requiresRegionCountries() && !obj.province) return [province.required]}
"vilayet Gerekli olmasa bile, boş olamaz.
Bunun nedeni varsayılan olarak yanlış olarak ayarlanan geçersiz değerli doğrulayıcı olmasıdır.
Ben null ekliyorum ise
: true, sonra il gerekse de, özel doğrulayıcı atlanır ve boş ili ile kaydetmek mümkündür edilir Şimdi(Ben null örneği olur çünkü olduğunu düşünüyorum)
province validator: {val, obj ->
if (obj.country in obj.requiresRegionCountries() && !obj.province) {
nullable: false
return [province.required] }
else {
nullable: true
}
}
nasıl Grails 2.0.3 yılında bunu başarabilirsiniz: ben, nedense böyle bir şey benim özel doğrulayıcı ve benim doğrulayıcı null belirtmek için de yeteneği gerekir?
Yanıtınız için teşekkür ederiz, ancak bir sorun var. Eğer null ve place.province değerine ayarlanmış olursam, özel doğrulama tamamen atlanır. Bazı ülkeler için null olmak istiyorum ama diğerlerinde olmamak istiyorum. – Eduard
Açık olması gerekirse: eğer null değeri true olarak değil ve dosyalanmış ise null ise, "null olamaz" hatası ve özel doğrulayıcı benim yürütülmez. NULLLAble eklerseniz: true ve değer boş, doğrulama geçer, özel doğrulayıcı benim yürütülmez. Bazı ülkeler için boş ve başkaları için boş olmamak istiyorum. Bu şu anki davranışla yapamadığım bir şey. – Eduard
Belki de bir 2.0.3 hata grails. Ben 2.0.4 çalıştıran ve benim için çalışıyorum basit bir demo proje ile çalışıyorum Ben – Tri