Groovy&Grails-代碼剪輯-複用約束

假如咱們在程序中使用了一個command對象,在Grails2.0以後的版本中引入了新的機制,能夠複用constraints塊的代碼,重用約束,以下面的例子:正則表達式

<!-- lang: groovy -->
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 
    } 
}

上面的代碼時一個標準的domain對象,假如咱們要在頁面中增長一個密碼驗證,經常使用的辦法是增長一個相似的command對象,代碼以下:dom

<!-- lang: groovy -->
class UserCommand {
    String firstName
    String lastName
    String password
    String confirmPassword

    static constraints = { 
        importFrom User
        password blank: false, nullable: false 
        confirmPassword blank: false, nullable: false 
    } 
}

上面的代碼修改了password爲沒加密的密碼,新增長了一個confirmPassword屬性,其餘的和domain對象同樣,包括約束也應該同樣,因此這裏能夠使用importFrom User重用User的約束加密

若是不須要徹底使用User的約束,能夠使用include和exclude參數,include代碼指定引入,exclude表明排除,以下:code

<!-- lang: groovy -->
…
static constraints = {
    importFrom User, include: ["lastName"]
    …
}

上面的代碼表示只引入lastName的約束信息對象

<!-- lang: groovy -->
…
static constraints = {
    importFrom User, include: [/.*Name/]
    …
}

上面的代碼表示只引入後綴爲Name的屬性的約束信息,這裏還使用了正則表達式。若是使用exclude則反之ast

相關文章
相關標籤/搜索