【问题标题】:What the difference between the blank and nullable in the grails domain class constraints?grails域类约束中的空白和可为空有什么区别?
【发布时间】:2019-10-16 03:31:45
【问题描述】:

刚刚看到这个 grails 约束的例子,但是为什么不把约束留空,我认为nullableblank 将具有相同的功能。


class User {
    String firstName
    String lastName
    String passwordHash

    static constraints = {
        firstName blank: false, nullable: false
        lastName blank: false, nullable: false
        passwordHash blank: false, nullable: false
    }
}

【问题讨论】:

    标签: grails groovy constraints grails-domain-class


    【解决方案1】:

    默认情况下,所有域类属性都不能为空(即它们具有隐式nullable: false 约束)。

    约束:

    • blank - 验证字符串值不为空。如果字符串值不能为空,则设置为 false

    如果字符串是null,则不会使用blank: true 进行验证。在这种情况下,将nullable 约束设置为true

    • nullable - 允许将属性设置为 null。默认情况下,Grails 不允许属性使用 null 值。 - 默认false。 如果属性允许空值,则设置为 true。

    但为什么不把空白作为约束,我认为可为空和空白都具有相同的功能

    表单提交产生的​​ Web 请求将具有空白字符串,而不是 null,用于没有值的输入字段。在对不可为空的属性进行批量属性绑定时,请记住这一点。默认行为是空字符串不会验证nullable: false,因为数据绑定器会将blank 字符串转换为null。这包括空字符串和空字符串。

    空字符串是任何字符串,这样trim() 方法会返回一个空字符串。要关闭空字符串到 null 的转换,请将 application.groovy 中的 grails.databinding.convertEmptyStringsToNull 属性设置为 false

    详情请咨询documentation

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2016-12-06
      • 1970-01-01
      • 2014-12-09
      • 2019-08-12
      • 1970-01-01
      • 2021-11-14
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多