从Grails 2.2.3更新到Grails 2.3.5(groovy 2.0.8-> 2.1.9)后,我发现了奇怪的行为 域对象:
class Element {
String name
String title
static constraints = {
title nullable: true
}
}
在创建过程中,String字段会自动修剪,空字符串将替换为null
def e = new Element(name:'', title:' sgg gg ')
assert e.name==null
assert e.title=='sgg gg'
我无法在Grails&的更新日志中找到这个超级功能。常规。我怎么能禁用它?
答案 0 :(得分:13)
Grails 2.3中的默认行为是在数据绑定期间修剪字符串。除此之外,另一个默认行为是在数据绑定期间将空字符串(其中没有任何内容,甚至是空格的字符串)转换为null。这两个事情按顺序发生,所以如果你绑定一个没有任何内容的字符串而是空格,默认行为是绑定null,因为String将被修剪,然后因为它是空的,它将被转换为null。这是一个合理的默认值。有单独的配置属性可用于禁用其中任何一种行为。
// grails-app/conf/Config.groovy grails.databinding.convertEmptyStringsToNull=false grails.databinding.trimStrings=false