grails - grails域类约束中的空白和可为空有什么区别?
问题描述
刚刚看到这个 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()
方法返回一个空字符串。关闭空字符串的转换以在 application.groovy中null
设置grails.databinding.convertEmptyStringsToNull
属性。false
请参阅文档以获取更多详细信息。
希望这会帮助你。
推荐阅读
- python - 为什么跳跃不起作用在pygame中不起作用
- php - Laravel 文件系统磁盘无法在生产中工作
- ios - 如何在已安装 PWA 时更新
- java - 使用过滤器查找 SQL 数据
- titanium - Titanium SDK 从 7 迁移到 8 应用流程就像框架一样
- linux - 打印目录中的文件名和奇数行
- java - 如何在 C++ Qt android 项目中使用 java exoplayer?
- r - 如何将矩阵中的特定行乘以某个值?
- javascript - WebGL drawBuffer 输出黑色纹理
- ruby-on-rails - 我在 Rails 6 中的链接在第一次点击时重定向到 2020,并在重新加载时正确运行