fab*_*474 26 model-view-controller grails grails-controller
目前,当我需要共享processParams(params)不同控制器之间的方法时,我使用继承或服务.这两种解决方案都有一些不便之处:
所以我的问题是:有没有其他方法可以使用一些可用于多个控制器的常用方法?
ata*_*lor 22
我喜欢的一个选项是将常用方法编写为类别,然后根据需要将其混合到控制器中.它提供了比继承更多的灵活性,可以访问诸如params之类的东西,并且代码简单易懂.
这是一个很小的例子:
@Category(Object)
class MyControllerCategory {
def printParams() {
println params
}
}
@Mixin(MyControllerCategory)
class SomethingController {
def create = {
printParams()
...
}
def save = {
printParams()
}
}
Run Code Online (Sandbox Code Playgroud)
这无助于您在开发模式下重新启动问题,但这是我解决此问题的方式。这很丑陋,而且可能不是一个好的实践,但我将通用代码作为闭包分解到类中。然后我可以做类似的事情:
new ControllerClosures().action(this)
Run Code Online (Sandbox Code Playgroud)
以及来自controllerClosures类中的with
def action={
it.response.something
return [allYourData]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8684 次 |
| 最近记录: |