我在Grails项目中遇到了一个控制器最奇怪的问题。我正在尝试对域对象进行简单更新。这是控制器的简化版本
def updateRecord = {
def foundHVT = Process.get(params.hvt)
foundHVT.summaryBy = params.summaryBy
foundHVT.catalogBy = params.catalogBy
foundHVT.editBy = params.editBy
foundHVT.produceBy = params.produceBy
foundHVT.correctedBy = params.correctedBy
// a bunch more of these
foundHVT.save(flush: true);
redirect (action:resource, id: params.hvt)
}
如果我运行应用程序的新实例并使用此控制器更新对象,则它不起作用,该对象不会保存。它在控制器中看起来很好。例如,我可以重新查询对象,并在保存后进行更改。
现在这里变得奇怪了。如果我使用预设脚手架编辑控制器并更新/保存域对象 - 然后切换回这个“updateRecord”控制器,它工作FINE直到我关闭它正在工作的服务器?!?
我意识到我遗漏了一些非常基本的东西,但我找不到它是什么。任何指导都将得到最慷慨的赞赏。
DM
答案 0 :(得分:1)
正如HVGOTCODES所说,Grails Clean似乎修复了这个控制器发生的奇怪现象。
答案 1 :(得分:0)
尝试在控制器中添加“def scaffold = true”,如果它还没有正常的入口点。
答案 2 :(得分:0)
可能脚手架save
填补了一些你不支持的领域。
可能出现的问题:
检查save()
结果并以Grails的方式呈现foundHVT.errors
。将failOnError: true
参数添加到save()
或仅查看foundHVT.hasErrors()
。请查看foundHVT.errors.allErrors
以了解验证问题。
为什么不foundHVT.properties = params
?
什么是foundHVT
?