【发布时间】:2011-11-25 08:29:40
【问题描述】:
我正在寻找如何清理我的 Grails 控制器代码的方法。在各种控制器中,我或多或少具有相同的逻辑..
- 获取对象
- 检查是否存在
- 等等..
有没有建议的方法让控制器动作重用通用代码?
--- 解决方案---
问题的所有答案都有助于我们实施的解决方案。
我们使用 Mixin 方法创建了一个在我们的控制器中使用的类。 mixin 公开的方法之一是 withObject 方法。此方法从控制器获取域名并将其用作该方法的基础。当然可以覆盖此行为!
def withObject(object=this.getClass().getName()-"Controller", id="id", Closure c) {
assert object
def obj = grailsApplication.classLoader.loadClass(object).get(params[id])
if(obj) {
c.call obj
} else {
flash.message = "The object was not found"
redirect action: "list"
}
}
所以所有答案都有助于解决方案!非常感谢!
【问题讨论】:
-
请编辑问题并添加您的代码示例。目前这个问题很模糊。
标签: grails controller dry