为插件中的Url连接自定义HandlerInterceptor?

时间:2014-07-03 15:34:11

标签: grails grails-plugin grails-2.3

我想在我的插件中将我的过滤器转换为handlerInterceptor,但我不太清楚如何去做。看起来我应该使用' doWithSpring'并映射一个处理程序拦截器,但我没有看到我在哪里映射网址。

为了节省一些讨论,我知道过滤器会在grails中执行此操作。我只是想在我的插件中将此代码转换为Java并使用HandlerInterceptor来减少这些调用的开销。

有人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在Grails中,所有处理程序拦截器都注册了filterInterceptor bean CompositeInterceptor。要向此bean添加新的处理程序拦截器,请使用addHandler方法。

CompositeInterceptor的源代码可以让您更好地了解如何完成此操作。在我的头顶,它可能看起来像这样:

def doWithSpring = {
  filterInterceptor.addHandler(MyCustomHandlerClass)
}

就处理程序响应的URL而言,这取决于处理程序中的实现。

答案 1 :(得分:0)

其实我觉得我可能已经解决了。你必须扩展HandlerInterceptor并注册bean ...

mvc.'interceptors'() {
    mvc.'mapping'('path': '/your/uri/**') {
        bean('class': 'CustomInterceptor')
    }
}

这里是我正在谈论的内容的链接(bind Spring HandlerInterceptor only to one controller

试试这个并测试它......