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

发布于 2024-10-25 11:56:58 字数 124 浏览 0 评论 0原文

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

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

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

谢谢

Is there a way of executing some piece of code before any controller action gets called?

I need to set a session variable based on the value of a get parameter, without taking into account which controller gets called.

Of course, once this processing is done, the request needs to follow its normal way to the corresponding controller/action.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

野却迷人 2024-11-01 11:56:58

听起来您想使用过滤器

例如grails-app/conf/MyFilter.groovy

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

Sounds like you want to use a filter.

e.g. grails-app/conf/MyFilter.groovy

class MyFilter {
    def filters = {
        extractSomething(controller: '*', action: '*') {
            before = {
                session.setAttribute('foo', params['paramName'])
            }
        }
    }
}
心意如水 2024-11-01 11:56:58

如果与多个或所有控制器一起使用,过滤器是很好的,但可能会变得昂贵。
你也可以尝试拦截器:

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

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

filters are good if used with multiple or all controllers but could get expensive.
you may also try interceptors:

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文