【发布时间】:2011-07-22 06:21:04
【问题描述】:
有没有办法在调用任何控制器操作之前执行一些代码?
我需要根据 get 参数的值设置会话变量,而不考虑调用哪个控制器。
当然,一旦这个处理完成,请求需要按照正常的方式到达相应的控制器/动作。
谢谢
【问题讨论】:
有没有办法在调用任何控制器操作之前执行一些代码?
我需要根据 get 参数的值设置会话变量,而不考虑调用哪个控制器。
当然,一旦这个处理完成,请求需要按照正常的方式到达相应的控制器/动作。
谢谢
【问题讨论】:
听起来你想使用filter。
例如grails-app/conf/MyFilter.groovy
class MyFilter {
def filters = {
extractSomething(controller: '*', action: '*') {
before = {
session.setAttribute('foo', params['paramName'])
}
}
}
}
【讨论】:
如果与多个或所有控制器一起使用,过滤器会很好,但可能会变得昂贵。 你也可以试试拦截器:
def beforeInterceptor = {
session.setAttribute('foo', params['paramName'])
}
【讨论】: