在使用CRUD脚手架之前无法保存域对象

时间:2011-05-20 19:40:56

标签: grails controller persistence

我在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

3 个答案:

答案 0 :(得分:1)

正如HVGOTCODES所说,Grails Clean似乎修复了这个控制器发生的奇怪现象。

答案 1 :(得分:0)

尝试在控制器中添加“def scaffold = true”,如果它还没有正常的入口点。

答案 2 :(得分:0)

可能脚手架save填补了一些你不支持的领域。

可能出现的问题:

  1. 检查save()结果并以Grails的方式呈现foundHVT.errors。将failOnError: true参数添加到save()或仅查看foundHVT.hasErrors()。请查看foundHVT.errors.allErrors以了解验证问题。

  2. 为什么不foundHVT.properties = params

  3. 什么是foundHVT