Groovy&Grails-代码剪辑-复用约束

假如我们在程序中使用了一个command对象,在Grails2.0之后的版本中引入了新的机制,可以复用constraints块的代码,重用约束,如下面的例子:


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对象,代码如下:


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代表排除,如下:


…
static constraints = {
    importFrom User, include: ["lastName"]
    …
}

上面的代码表示只引入lastName的约束信息


…
static constraints = {
    importFrom User, include: [/.*Name/]
    …
}

上面的代码表示只引入后缀为Name的属性的约束信息,这里还使用了正则表达式。如果使用exclude则反之

你可能感兴趣的:(Groovy&Grails-代码剪辑-复用约束)