Grails控制器重复所有操作的代码

Vic*_*tin 2 grails action controller

想象一下这个控制器:

class exampleController{

def action1 = {}

def action2 = {}

def action3 = {}

def action4 = {}

def action5 = {}

}
Run Code Online (Sandbox Code Playgroud)

我希望能够在此控制器的所有动作中返回相同的参数.想象一下:

def user = session.user    
[user: user]
Run Code Online (Sandbox Code Playgroud)

除了在所有动作上编写所有相同的代码之外,有没有办法做到这一点?session.user return params就是一个例子.我不想真的回归它.

Dón*_*nal 5

一个简单的解决方案是将此代码放在一个方法中,并从每个操作中调用它

class exampleController{

  def action1 = {getModel()}

  def action2 = {getModel()}

  def action3 = {getModel()}

  def action4 = {getModel()}

  def action5 = {getModel()}

  private getModel() {
    def user = session.user    
    [user: user]    
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然这确实涉及一些重复(调用相同的方法),但是这里发生的事情更加明显.在调试/测试控制器时,很容易忘记过滤器和拦截器,这往往会导致类似的问题

@**%在这里发生了什么?