2013-02-10 57 views
3

我简直就是刚刚开始使用grails并刚刚生成一些脚手架。 似乎有一些非常通用的代码在这里将在每个控制器中重复。将样板代码从控制器中移出

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

你会如何建议从控制器删除此? 理想我想只是做一个

def personInstance = Person.get(id) 

,然后对每个控制器什么是在每一个控制器生成默认的一个异常处理程序做的。

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

回答

2

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

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

不过,你应该考虑你是否真的不想使用乐观/悲观锁定,因为这会让你的应用程序变得不是事务性的。

+0

谢谢我不知道关于grails安装模板。 我想使用乐观锁 - 我只是不想手动检查每个控制器使用基本相同的代码。 – SuprF1y 2013-02-10 23:25:49