空白和空约束之间的差异

SK1*_*76H 11 grails grails-orm

空白和空约束之间有什么区别?

我有以下课程

class Task {

    String title
    String notes
    TekUser assignedTo
    Date dueDate
    TekEvent event

    static constraints = {
        title blank:false
        notes blank: true , maxSize: 5000
        assignedTo nullable:true
        dueDate nullable:true
    }

    static belongsTo = TekEvent
}
Run Code Online (Sandbox Code Playgroud)

并且即使我指定了,创建的mysql表也将注释设置为not null notes blank : true

空白有什么影响:真的有吗?

aru*_*zca 14

  • blank:true表示该字段接受空字符串或仅由空格组成的字符串作为有效值.如:""," "
  • nullable:true表示该字段接受null为有效值

它们可以一起使用.例如:

title blank:false, nullable: true
Run Code Online (Sandbox Code Playgroud)

  • 默认情况下,Grails不允许属性的空值(例如:nullable:false).如果你想要一个空值,你需要明确表达它 - > nullable:true (2认同)
  • 因此,notes列可能需要的约束是:nullable:true,blank:true,maxSize:500 (2认同)

Mer*_*aye 6

虽然aruizca的答案是正确和描述性的,但我在读这本书时发现了这一点:Burt Beckwith的" Programming Grails ".

空白与空白 在许多情况下,空字符串和null是等效的 - 没有设置值.但是,来自Web浏览器POST请求的HTTP提交会为没有值的输入发送空字符串.非HTTP数据不会出现这种情况,例如来自其他外部客户端(如Web服务)或测试期间,因此将HTTP空间的空白转换为空值将有助于简化验证.在我们处理它的同时,我们还可以从提交的值中修剪额外的空格.

它可能与您的问题无关.Aruizca的答案就是您所需要的,但这可以是关于Blanks和Nulls的其他信息.