grails - 注册自定义约束

标签 grails grails3.2.0

我正在尝试将Grails 2.3.7项目升级到Grails 3.2.3。在2.3.7中,我使用了自定义约束,并使用以下命令在/conf/Config.groovy中注册它们:

org.codehaus.groovy.grails.validation.ConstrainedProperty.registerNewConstraint('description', my.validation.DescriptionConstraint)

然后,我可以在域中使用类似的内容:
static constraints = {
  approvedDate(description: '>= applyDate')
}

但是,在Grails 3.2.3中,当我在/conf/application.groovy中放置上述命令(并从包名称中删除org.codehaus.groovy)时,出现以下错误:
Error occurred running Grails CLI: No signature of method: groovy.util.ConfigObject.registerNewConstraint() is applicable for argument types: (groovy.util.ConfigObject, groovy.util.ConfigObject) values: [[:], [DESCRIPTION_CONSTRAINT:[:]]]

我注意到Grails 3中的验证类有所更改。但是,使用Grails-validation的约束类仍然会出现相同的错误。

我发现的所有验证插件都早在Grails 3之前就被放弃了。而且在Grails 3.2中找不到用于注册新约束的文档。

最佳答案

在/grails-app/init/BootStrap.groovy中调用ConstrainedProperty.registerNewConstraint是可行的。 (在Grails 3.2.4中进行了测试)

class BootStrap {
  def init = { servletContext ->
    grails.validation.ConstrainedProperty.registerNewConstraint('description', my.validation.DescriptionConstraint)
    // The rest of bootstrap code
  }
}

注意。以前,我从/grails-app/init/Application.groovy中的main()调用它。它适用于运行应用程序。但是,它不适用于集成测试。

关于grails - 注册自定义约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41071987/

相关文章:

grails - 关于使用 “soft”加入的Grails GORM域类的问题

grails - 动态设置 Grails 应用程序上下文?

tomcat - 无法启动应用程序 : grails 3 + tomcat 8

grails - Grails 3:控制台插件不在生产模式下出现

grails - 如何在grails 3中配置quartz插件?

javascript - Grails JSONObject解析问题

hibernate - findAll()不返回正确的对象类型

grails - ils。域类。 1:米

tomcat - Grails 3 App 在 tomcat 7 中显示 404 而不是主页