![](/img/trans.png)
[英]When and why should nullable or/and blank constraints in a grails domain class?
[英]What the difference between the blank and nullable in the grails domain class constraints?
剛剛看到 grails 約束的這個例子,但是為什么不把空白作為約束,我認為可為nullable
和blank
都將具有相同的 function。
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
。 如果該屬性允許 null 值,則設置為 true。但是為什么不把空白作為約束,我認為可為空和空白都將具有相同的 function
對於沒有值的輸入字段,由表單提交產生的 Web 請求將具有空白字符串,而不是 null 。 在對不可為空的屬性進行批量屬性綁定時,請記住這一點。 默認行為是空白字符串不會驗證nullable: false
因為數據綁定器會將blank
字符串轉換為null
。 這包括空字符串和空字符串。
空白字符串是任何字符串,因此trim()
方法返回一個空字符串。 要關閉空字符串到null
的轉換,請將 application.groovy 中的grails.databinding.convertEmptyStringsToNull
屬性設置為false
。
請參閱文檔以獲取更多詳細信息。
希望這會幫助你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.