grails - 将样板代码移出 Controller

标签 grails groovy

我实际上只是从 grails 着手,并且刚刚生成了一些脚手架。 这里似乎有一些非常通用的代码将在每个 Controller 中重复。

  1. get() 是否成功的测试
  2. 乐观锁定检查

您建议如何从 Controller 中删除它? 理想情况下,我只想做一个

def personInstance = Person.get(id)

然后让一个异常处理程序为每个 Controller 执行默认情况下在每个 Controller 中生成的操作。

  def update(Long id, Long version) {
    def personInstance = Person.get(id)
    if (!personInstance) {
        flash.message = message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), id])
        redirect(action: "list")
        return
    }

    if (version != null) {
        if (personInstance.version > version) {
            personInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
                      [message(code: 'person.label', default: 'Person')] as Object[],
                      "Another user has updated this Person while you were editing")
            render(view: "edit", model: [personInstance: personInstance])
            return
        }
    }

最佳答案

如果您想更改 Controller 的默认脚手架,只需发出“grails install-templates”命令即可。很多文件将在 src/templates 文件夹中创建。其中之一是“src/templates/scaffolding/Controller.groovy”

然后只需将“update”函数修改为您需要的格式,并为您的域类再次生成 Controller 。

不过,您应该考虑是否真的不想使用乐观/悲观锁定,因为这会使您的应用程序在某种程度上不是事务性的。

关于grails - 将样板代码移出 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14795203/

相关文章:

Groovy: "def"中 "def x = 0"的用途是什么?

multithreading - Groovy GPars如何按线程号/计数休眠线程?

groovy - IDEA中Groovy中的不良颜色

grails - 我在grails 2.0.0中使用$ {resource(dir :' dir',file :'file.png')}有问题

grails - Grails Spring Websocket插件和Spring安全性

grails - 如何防止已登录的用户在Grails中使用Spring Security ACL编辑其他用户?

grails - 在Grails中查询多对多关系时出错

groovy - 如何使用通过groovy通过logback.groovy配置的logback

xml - Groovy 用 xpath 替换 xml 中的节点值

JSON 到 Groovy 与 JsonSlurper 和未知 "string"