【问题标题】:Groovy: unable to set properties from javaGroovy:无法从 java 设置属性
【发布时间】:2015-05-09 00:39:18
【问题描述】:

我正在开发一个 Grails 应用程序。我有一个带有一些属性的 Groovy bean。我正在尝试使用 setter 方法从 Java 类中实例化和设置一些属性。虽然我没有任何错误,但属性不包含任何值。我尝试在调试模式下查看对象内容:groovy 对象包含 1 个唯一字段 (r$fields),其中包含一个空的 HashMap。

Groovy Bean

import java.time.LocalDateTime;

import groovy.transform.ToString;

@ToString(includeNames = true, ignoreNulls = true)
class Article {

    String id
    String modelId
    String ean
    String deepUrl

    LocalDateTime lastUpdate
}

Java 代码

a = new Article();
a.setId("123");
a.setModelId("456");
a.setEan("789");
a.setLastUpdate(LocalDateTime.now(Clock.systemUTC()));

执行上述代码后,对象 a 结果为空。

在 Java 代码中添加 a.toString() 作为最后一条语句,我得到以下 NPE

堆栈跟踪如下:java.lang.NullPointerException at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)

【问题讨论】:

  • 请提供一些我们可以用来重现您的问题的代码。

标签: java grails groovy


【解决方案1】:

我找到了解决此问题的方法,但我不太明白其中的原因。问题与变量 deepUrl 有关。删除代码后,代码就像一个魅力。我在 groovy web 控制台上对其进行了测试,它可以工作 *https://groovyconsole.appspot.com/script/5656619568332800)。这可能与grails有关吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    相关资源
    最近更新 更多