【问题标题】:I'm getting a NullPointerException when accessing static constraints访问静态约束时出现 NullPointerException
【发布时间】:2008-10-18 11:19:59
【问题描述】:

代码

${personRequest.constraints.requestStatus.inList}

在我的 gsp 文件中抛出 NullPointerException,但 new PersonRequest().constraints.. 有效。为什么? constraints 不是静态的吗?

【问题讨论】:

    标签: grails groovy


    【解决方案1】:

    复制自here(grails 用户邮件列表)

    但是为什么要访问静态字段 不行吗?

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

    Grails 使用 监控的约束生成器 “调用”不存在的方法, 即您使用的属性名称:

    type( inList: [xxxxx])
    

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

    根据这些信息,Grails 构建了一个 所有约束的列表
    可用并将它们绑定到未来 域类的实例。

    所以,当您访问 User.constraints 静态地,你得到一个
    关闭。

    我们 - 可以 - 考虑替换值 静态约束属性 在运行时评估后 初始化它的闭包。 然而,这可能有点“太多” 魔法。人们怎么看?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 2012-11-11
      • 2014-11-17
      • 1970-01-01
      相关资源
      最近更新 更多