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

发布于 2024-11-08 14:03:07 字数 711 浏览 1 评论 0原文

我在 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”控制器,它工作正常,直到我关闭它正在工作的服务器?!?

我意识到我错过了一些非常基本的东西,但我找不到它是什么。任何指导将不胜感激。

DM

I'm having the strangest problem with a controller in a Grails project. I am trying to do a simple update of a domain object. Here is a simplified version of the controller

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)
}

If I run the a new instance of the application of and use this controller to update an object, it doesn't work, the object doesn't save. It will look fine within the controller. I can, for example, re-query the object and the changes are there, post save.

Now here's where it gets weird. If i use the preset scaffold edit controller and update/save an domain object -- and then switch back to this "updateRecord" controller it works FINE until i shut down the server it is working on?!?

I realize I am missing something very basic, but I can't find what it is. Any guidance would be most graciously appreciated.

DM

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

药祭#氼 2024-11-15 14:03:07

正如 HVGOTCODES 所指出的,Grails Clean 似乎已经修复了该控制器出现的任何奇怪问题。

As HVGOTCODES noted Grails Clean seems to have fixed whatever weirdness was going on with this controller.

瀟灑尐姊 2024-11-15 14:03:07

如果控制器还没有正常的入口点,请尝试在控制器中放入“defscaffold=true”。

try putting a "def scaffold=true" in your controller if it does not already have the normal entry points.

为人所爱 2024-11-15 14:03:07

也许脚手架 save 填补了一些您没有填补的领域。

可能出现的问题:

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

  2. 为什么不foundHVT.properties = params

  3. 没有foundHVT是什么?

Probably scaffolding save fills some field that you don't.

Possible problems:

  1. Do check save() result and render foundHVT.errors the way Grails does. Add failOnError: true parameter to save() or just check foundHVT.hasErrors(). Look at foundHVT.errors.allErrors for validation problems.

  2. Why not foundHVT.properties = params?

  3. What is there is no foundHVT?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文