【发布时间】:2012-06-03 11:02:46
【问题描述】:
我有一个表格来创建一个地方。根据国家/地区,省(州、地区)字段是否必填。
当不需要时,我想为空,而不是空字符串。我有使所有空表单字段为空的代码:
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()
现在,在 place 域中,我在该省有一个验证器:
province validator: {val, obj -> if (obj.country in obj.requiresRegionCountries() && !obj.province) return [province.required]}
有了这条规则,我总是得到“province can't be null”,即使它是否需要。
我认为这是因为可空验证器默认设置为 false。
如果我添加 nullable: true,那么即使需要省份,也会跳过自定义验证器,并且可以使用空省份进行保存(我认为这是因为它被实例化为 null)
现在,我需要以某种方式自定义验证器,并且还需要能够在验证器中指定可空值,如下所示:
province validator: {val, obj ->
if (obj.country in obj.requiresRegionCountries() && !obj.province) {
nullable: false
return [province.required] }
else {
nullable: true
}
}
如何在 Grails 2.0.3 中实现这一点?
【问题讨论】:
标签: grails grails-domain-class grails-2.0 grails-validation