grails - grails域类约束中的空白和可为空有什么区别?

标签 grails groovy constraints grails-domain-class

刚刚看到这个 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
    }
}

最佳答案

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

约束:

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

  • 如果字符串是 null , 它不会通过 blank: true 进行验证.在这种情况下,设置 nullabletrue 的约束.
  • nullable - 允许将属性设置为 null .默认情况下,Grails 不允许 null属性的值。 - 默认为 false .
    如果属性允许空值,则设置为 true。

  • But why not just leave blank as constraint, i think both nullable and blank will have same function



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

    空白字符串是任何字符串,如 trim()方法返回一个空字符串。关闭空字符串到 null 的转换设置grails.databinding.convertEmptyStringsToNull属性(property)给 false在 application.groovy 中。

    请引用 documentation更多细节。

    希望这会帮助你。

    关于grails - grails域类约束中的空白和可为空有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58405355/

    相关文章:

    grails - CVS在Intellij IDEA中导致Grails问题

    python - 标准化特定语言的发布/工具组

    grails - 创建Grails演示应用程序时出现未授权(401)错误

    eclipse - 如何在不直接访问 Internet 的情况下为 Eclipse/STS 安装 Groovy 和 Grails 插件?

    grails - Grails-最低安装要求

    sql - MSSQL : Update statement avoiding the CHECK constraint

    mysql - 我如何在 mysql 中为可以为 null 的列设置唯一性约束?

    grails - 如何从特质 “inherit”约束?

    validation - 在 grails 中验证后处理所有 Controller 方法中错误的最佳方法

    grails - 运行单个集成测试/单个测试类