使用Grails 3.3在Command Objects中使用共享约束

时间:2019-06-17 21:05:48

标签: grails gorm grails-2.0 grails-3.3.x

将旧的单元测试从grails 2.5.4迁移到grails 3.3时遇到问题

我有很多使用共享首选项的命令。例如,UserController内部的UserCommand:

class UserCommand implements Validateable {
    String firstName

    static constraints = {
        firstName shared: 'nonNullableString'
    }
}

在application.groovy中,我以这种方式定义了约束:

grails.gorm.default.constraints = {
    nonNullableString(blank: false, maxSize: 255)
}

我也将User域定义为:

class User {
    String firstName

    static constraints = {
        firstName shared: 'nonNullableString'
    }
}

我写测验:

User user = new User()
user.validate() 

它按预期工作。但是当我这样做时:

UserCommand command = new UserCommand()
command.validate()

它引发异常。

`grails.gorm.validation.exceptions.ValidationConfigurationException: Property [User.firstName] references shared constraint [nonNullableString:null], which doesn't exist!`

我以为我在application.groovy文件中犯了一个错误,但是共享约束适用于域。

这是一个有相同问题的示例项目:https://github.com/almejo/commandtest

有什么想法吗?

0 个答案:

没有答案