grails 域 class 约束中的空白和可为空有什么区别?
What the difference between the blank and nullable in the grails domain class constraints?
刚刚看到这个关于 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
}
}
默认情况下,所有域 class 属性都不可为空(即它们具有隐式 nullable: false
约束)。
约束条件:
blank
- 验证字符串值不为空。如果字符串值不能为空,则设置为 false
。
如果字符串是 null
,则不会使用 blank: true
进行验证。在这种情况下,将 nullable
约束设置为 true
.
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 请求将具有 空字符串,而不是空字符串 。在对不可为 null 的属性进行大量 属性 绑定时,请记住这一点。默认行为是空字符串不会验证 nullable: false
,因为数据绑定器会将 blank
字符串转换为 null
。这包括空字符串和空白字符串。
空字符串是 trim()
方法 returns 为空字符串的任何字符串。要关闭空字符串到 null
的转换,请在 application.groovy.
中将 grails.databinding.convertEmptyStringsToNull
属性 设置为 false
详情请参考documentation。
希望对您有所帮助。
刚刚看到这个关于 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
}
}
默认情况下,所有域 class 属性都不可为空(即它们具有隐式 nullable: false
约束)。
约束条件:
blank
- 验证字符串值不为空。如果字符串值不能为空,则设置为false
。
如果字符串是 null
,则不会使用 blank: true
进行验证。在这种情况下,将 nullable
约束设置为 true
.
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 请求将具有 空字符串,而不是空字符串 。在对不可为 null 的属性进行大量 属性 绑定时,请记住这一点。默认行为是空字符串不会验证 nullable: false
,因为数据绑定器会将 blank
字符串转换为 null
。这包括空字符串和空白字符串。
空字符串是 trim()
方法 returns 为空字符串的任何字符串。要关闭空字符串到 null
的转换,请在 application.groovy.
grails.databinding.convertEmptyStringsToNull
属性 设置为 false
详情请参考documentation。
希望对您有所帮助。