【发布时间】:2016-06-07 23:46:48
【问题描述】:
我有简单的代码覆盖RestfulController 子类中的show() 方法。以下代码改编自 Grails 2.5.4 文档中的“Implementing the 'show' action”示例。
def show() {
Coupons instance = Coupons.findByCode(params.code)
print("instance: ${instance}")
if (instance == null) {
render status: 404
}
else {
return instance
}
}
当在数据库 (MongoDB) 中没有找到匹配的文档时,print 语句按预期指示 null 对象。
instance: null
当找到匹配的文档时,print 语句会打印以下内容。
instance: com.example.Coupons: (unsaved)
我的问题是,当找到一个文档时,为什么它会以这种“未保存”状态返回?更重要的是,当对象肯定存在时,为什么条件instance == null 评估为true?
【问题讨论】:
-
变量
code未定义。我相信您很可能正在寻找params.code。 -
感谢@dmahapatro。这是我试图从我的控制器解释完整代码的一个错字。我现在修正了错字以引用
params.code。 -
能否也添加
Coupons有问题的域类? -
感谢@dmahapatro 的建议。我实际上刚刚发现问题可能是域类中
transients的定义。我删除了transients,现在show()操作按需要响应。
标签: rest grails grails-orm