1
在Config.groovy
中,可以指定將應用於所有屬性的默認約束條件,例如,屬性類型的默認約束條件
grails.gorm.default.constraints = {
'*'(nullable: true)
}
有沒有一種方法來指定某種類型屬性的默認約束?例如,如果我想爲所有String
屬性添加(blank: false)
約束,有沒有辦法做到這一點?
在Config.groovy
中,可以指定將應用於所有屬性的默認約束條件,例如,屬性類型的默認約束條件
grails.gorm.default.constraints = {
'*'(nullable: true)
}
有沒有一種方法來指定某種類型屬性的默認約束?例如,如果我想爲所有String
屬性添加(blank: false)
約束,有沒有辦法做到這一點?
不知道如何添加一個默認約束某種類型,但在Programming Grails,伯特提出一個過濾器來處理空白字段:
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。
因此,Grails 2.3應用程序不需要此過濾器或'blank:false'約束,對吧? –
是的,正確的(可能僅限於新的數據綁定API)。 –