代码
${personRequest.constraints.requestStatus.inList}
我的gsp文件中的会引发NullPointerException
,但new PersonRequest().constraints..
有效。为什么? constraints
不是静态的吗?
答案 0 :(得分:3)
从here(grails-user邮件列表)
复制但为什么要访问静态字段 不起作用?
因为“约束”静态字段 是一个封闭属性。它没有 与...有关的子属性 约束
Grails使用a来评估此闭包 监视的约束构建器 “调用”不存在的方法, 即您使用的财产名称:
type( inList: [xxxxx])
...导致方法调用“type” 包含“inList”的Map参数 ==>一些价值。
从这些信息中,Grails建立了一个 所有约束的清单
可用并将它们绑定到未来 域类的实例。因此,当您访问User.constraints时 静静地,你得到了一个 闭合。
我们 - 可以 - 寻找替换价值 静态约束属性 在评估后的运行时 关闭它初始化为。 然而,这可能有点“太多” 魔法。人们的想法是什么?
仅供参考,因为直到现在这样 0.4(如果我记得)约束不是静态的,在0.4中它们可以 仍然是非静态的。仅在0.5
我们会抛出一个异常/忽略 非静态约束。