簡體   English   中英

grails 域 class 約束中的空白和可為空有什么區別?

[英]What the difference between the blank and nullable in the grails domain class constraints?

剛剛看到 grails 約束的這個例子,但是為什么不把空白作為約束,我認為可為nullableblank都將具有相同的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM