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

问题描述 投票:0回答:1

刚刚看到了此示例的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个回答
0
投票

默认情况下,所有域类属性都不为空(即,它们具有隐式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

希望这对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.