刚刚看到了此示例的grails约束,但是为什么不只将空白作为约束,我认为nullable
和blank
都将具有相同的功能。
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
进行验证。在这种情况下,请将nullable
约束设置为true
。
nullable
-允许将属性设置为null
。默认情况下,Grails不允许属性使用null
值。 -默认值为false
。如果属性允许空值,则设置为true。对于没有值的输入字段,但是为什么不只保留空白作为约束,我认为可为空和空白将具有相同的功能
表单提交产生的Web请求将具有空白字符串,不为null。将质量属性绑定到不可为空的属性时,请记住这一点。默认行为是空白字符串将不对nullable: false
进行验证,因为数据绑定程序会将blank
字符串转换为null
。这包括空字符串和空字符串。
空白字符串是可以使trim()
方法返回空字符串的任何字符串。要关闭将空字符串转换为null
的过程,请在application.groovy中将grails.databinding.convertEmptyStringsToNull
属性设置为false
。
更多详细信息,请参阅documentation。
希望这对您有帮助。