2011-05-20 67 views
0

我遇到了Grails项目中控制器最奇怪的问题。我正在尝试做一个域对象的简单更新。这里是控制器无法保存域对象,直到使用CRUD脚手架

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

听起来不对。你有没有试过Grails清洁? – hvgotcodes 2011-05-20 19:50:35

+0

也,你有什么异常?你是否启用了SQL日志记录? – hvgotcodes 2011-05-20 19:50:59

+0

是的,对不起,我确实有这些,我只是在简要介绍控制器的基本知识,而且它根本没有报告任何错误。自从清理该项目以来,它一直运行良好。 – awfulHack 2011-05-25 20:12:14

回答

1

正如HVGOTCODES指出的那样,Grails Clean似乎已经解决了这个控制器正在发生的任何问题。

0

尝试把一个“高清支架=真”在你的控制器,如果它已经没有正常的入口点。

0

大概是脚手架save填补了一些你不知道的领域。

可能出现的问题:

  1. 做检查save()结果和渲染foundHVT.errors的Grails的方式做。将failOnError: true参数添加到save()或仅检查。看看foundHVT.errors.allErrors验证问题。

  2. 为什么不是foundHVT.properties = params

  3. 什么是没有foundHVT