我在访问静态约束时遇到NullPointerException

时间:2008-10-18 11:20:00

标签: grails groovy

代码

${personRequest.constraints.requestStatus.inList}
我的gsp文件中的

会引发NullPointerException,但new PersonRequest().constraints..有效。为什么? constraints不是静态的吗?

1 个答案:

答案 0 :(得分:3)

here(grails-user邮件列表)

复制
  

但为什么要访问静态字段   不起作用?

     

因为“约束”静态字段   是一个封闭属性。它没有   与...有关的子属性   约束

     

Grails使用a来评估此闭​​包   监视的约束构建器   “调用”不存在的方法,   即您使用的财产名称:

type( inList: [xxxxx])
     

...导致方法调用“type”   包含“inList”的Map参数   ==>一些价值。

     

从这些信息中,Grails建立了一个   所有约束的清单
  可用并将它们绑定到未来   域类的实例。

     

因此,当您访问User.constraints时   静静地,你得到了一个   闭合。

     

我们 - 可以 - 寻找替换价值   静态约束属性   在评估后的运行时   关闭它初始化为。   然而,这可能有点“太多”   魔法。人们的想法是什么?

     

仅供参考,因为直到现在这样   0.4(如果我记得)约束不是静态的,在0.4中它们可以   仍然是非静态的。仅在0.5
  我们会抛出一个异常/忽略   非静态约束。