域对象字符串字段自动修剪

时间:2014-02-17 19:56:41

标签: grails gorm

从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&的更新日志中找到这个超级功能。常规。我怎么能禁用它?

1 个答案:

答案 0 :(得分:13)

来自:http://grails.1312388.n4.nabble.com/Grails-2-3-Data-Binding-String-Trimming-And-Null-Conversions-td4645255.html

  

Grails 2.3中的默认行为是在数据绑定期间修剪字符串。除此之外,另一个默认行为是在数据绑定期间将空字符串(其中没有任何内容,甚至是空格的字符串)转换为null。这两个事情按顺序发生,所以如果你绑定一个没有任何内容的字符串而是空格,默认行为是绑定null,因为String将被修剪,然后因为它是空的,它将被转换为null。这是一个合理的默认值。有单独的配置属性可用于禁用其中任何一种行为。

   // grails-app/conf/Config.groovy
   grails.databinding.convertEmptyStringsToNull=false
   grails.databinding.trimStrings=false

我相信提到here in the documentation