Grails - 跨控制器代码,在每个请求上执行

时间:2011-03-24 15:45:50

标签: grails grails-controller

在调用任何控制器操作之前,有没有办法执行某段代码?

我需要根据get参数的值设置会话变量,而不考虑调用哪个控制器。

当然,一旦完成此处理,请求就需要按照正常方式执行相应的控制器/操作。

由于

2 个答案:

答案 0 :(得分:4)

听起来你想使用filter

e.g。 的grails-app / CONF / MyFilter.groovy

class MyFilter {
    def filters = {
        extractSomething(controller: '*', action: '*') {
            before = {
                session.setAttribute('foo', params['paramName'])
            }
        }
    }
}

答案 1 :(得分:2)

如果与多个或所有控制器一起使用,

滤镜很好,但可能会变得昂贵。 你也可以尝试拦截器:

def beforeInterceptor = {
       session.setAttribute('foo', params['paramName'])
}

http://www.grails.org/Controllers+-+Interceptors