在Config.groovy
中,可以指定将应用于所有属性的默认约束,例如
grails.gorm.default.constraints = {
'*'(nullable: true)
}
有没有办法为某种类型的属性指定默认约束?例如,如果我想为所有(blank: false)
属性添加String
约束,有没有办法做到这一点?
答案 0 :(得分:1)
不确定是否为某种类型添加默认约束,但在Programming Grails中,Burt建议使用过滤器来处理空白字段:
class SiteFilters {
def filters = {
blankToNullAndTrim(controller: '*', action: '*') {
before = {
if (request.post) {
convertBlanksToNullsAndTrim(params)
}
true
}
}
}
private static void convertBlanksToNullsAndTrim(Map map) {
def keys = [] + map.keySet() // copy to avoid
//ConcurrentModificationException
for (name in keys) {
def value = map[name]
if (value instanceof String) {
value = value.trim()
if (value.length() == 0) {
map[name] = null // don't remove - explicity set to null
} else {
map[name] = value // update if trimmed
}
} else if (value instanceof Map) {
// recurse with empty nested param, e.g., "location":["id":""]
convertBlanksToNullsAndTrim value
}
}
}
}
这样就不需要添加blank:false
。
此外,在Grails 2.3.x中,此行为已更改:默认情况下,所有空白和空字符串将在数据绑定期间(可配置)转换为null。