我正在开发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()));
执行上面的代码后,对象结果为空。
在Java代码中添加a.toString()
作为最后一个语句我得到以下NPE
Stacktrace如下: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)
答案 0 :(得分:1)
我找到了解决这个问题的方法,但我并不能理解其中的原因。问题与变量deepUrl有关。删除后,代码将作为魅力。我在groovy Web控制台上测试了它,它可以工作* https://groovyconsole.appspot.com/script/5656619568332800)。这可能与Grails有关吗?