【问题标题】:Validation constraints importFrom throws exception验证约束 importFrom 抛出异常
【发布时间】:2017-02-27 09:42:32
【问题描述】:

我在尝试从使用共享约束的域类中导入约束时遇到以下问题。 绑定阶段出现异常

例外:

Property [somePackage.User.email] references shared constraint [email:null], which doesn't exist!

域:

class User {
    String email
    static constraints = {
        email(shared: 'email', unique: true)
}

命令

class UpdateClientCommand {
    String email

    static constraints = {
        importFrom User
    }

}

堆栈跟踪:

Property [clearhub.User.email] references shared constraint [email:null], which doesn't exist!. Stacktrace follows:


 Caused by: org.grails.core.exceptions.GrailsConfigurationException: Property [mypackage.User.email] references shared constraint [email:null], which doesn't exist!
        at org.grails.validation.DefaultConstraintEvaluator.applySharedConstraints(DefaultConstraintEvaluator.java:287)
        at org.grails.validation.DefaultConstraintEvaluator.evaluateConstraintsMap(DefaultConstraintEvaluator.java:245)
        at org.grails.validation.DefaultConstraintEvaluator.evaluateConstraints(DefaultConstraintEvaluator.java:132)
        at org.grails.validation.DefaultConstraintEvaluator.evaluateConstraints(DefaultConstraintEvaluator.java:119)
        at org.grails.validation.DefaultConstraintEvaluator.evaluate(DefaultConstraintEvaluator.java:80)
        at org.grails.validation.ConstrainedPropertyBuilder.handleImportFrom(ConstrainedPropertyBuilder.java:173)
        at org.grails.validation.ConstrainedPropertyBuilder.createNode(ConstrainedPropertyBuilder.java:165)
        at groovy.util.BuilderSupport.doInvokeMethod(BuilderSupport.java:101)
        at org.grails.validation.ConstrainedPropertyBuilder.doInvokeMethod(ConstrainedPropertyBuilder.java:72)
        at groovy.util.BuilderSupport.invokeMethod(BuilderSupport.java:67)
        at mypackage.UpdateClientCommand$__clinit__closure1.doCall(ClientController.groovy:47)
        at org.grails.validation.DefaultConstraintEvaluator.evaluateConstraintsMap(DefaultConstraintEvaluator.java:240)
        at org.grails.validation.DefaultConstraintEvaluator.evaluateConstraints(DefaultConstraintEvaluator.java:144)
        at org.grails.validation.DefaultConstraintEvaluator.evaluate(DefaultConstraintEvaluator.java:92)
        at grails.validation.Validateable$Trait$Helper.validate(Validateable.groovy:149)
        at grails.validation.Validateable$Trait$Helper.validate(Validateable.groovy:82)
        ... 37 common frames omitted

有什么想法吗?

【问题讨论】:

  • 经过一些调试后,似乎不支持这种情况。我放弃了使用共享约束来支持'importFrom'
  • 如果还有其他字段,您仍然可以使用 importFrom 并排除导致问题的特定字段。

标签: grails grails3 grails3.2.0


【解决方案1】:

如果您将约束定义为 shared - 它应该在 grails-app/conf/Config.groovy 的 grails.gorm.default.constraints 中定义。让我猜猜那里没有定义“电子邮件”,所以你得到了这个异常?

只需从用户中删除“shared: 'email'”,导入就可以正常工作了。

有用的链接:http://mrhaki.blogspot.com.by/2014/03/grails-goodness-combining-constraints.html

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 2013-06-29
    相关资源
    最近更新 更多