【发布时间】:2008-10-18 11:19:59
【问题描述】:
代码
${personRequest.constraints.requestStatus.inList}
在我的 gsp 文件中抛出 NullPointerException,但 new PersonRequest().constraints.. 有效。为什么? constraints 不是静态的吗?
【问题讨论】:
代码
${personRequest.constraints.requestStatus.inList}
在我的 gsp 文件中抛出 NullPointerException,但 new PersonRequest().constraints.. 有效。为什么? constraints 不是静态的吗?
【问题讨论】:
复制自here(grails 用户邮件列表)
但是为什么要访问静态字段 不行吗?
因为“约束”静态字段 是一个闭包属性。它没有 相关的子属性 约束。
Grails 使用 监控的约束生成器 “调用”不存在的方法, 即您使用的属性名称:
type( inList: [xxxxx])...导致对“类型”的方法调用 包含“inList”的 Map 参数 ==> 一些价值。
根据这些信息,Grails 构建了一个 所有约束的列表
可用并将它们绑定到未来 域类的实例。所以,当您访问 User.constraints 静态地,你得到一个
关闭。我们 - 可以 - 考虑替换值 静态约束属性 在运行时评估后 初始化它的闭包。 然而,这可能有点“太多” 魔法。人们怎么看?
仅供参考,现在是这样,因为直到 0.4(如果我记得的话)约束不是静态的,在 0.4 中它们可以 仍然是非静态的。仅在 0.5
我们会抛出异常/忽略吗 非静态约束。
【讨论】: