Spring MVC拦截器映射问题
我有这段XML:
我有三个不同的拦截器是有原因的,虽然StaticsHandlerInterceptor
只是preHandle
方法返回true
(对于我所有的静态内容(js,css等))。 第二个是针对AJAX请求。 第三个是实际页面。 我所看到的是静态和AJAX拦截器被调用时应该被调用; 然而,有了它们,总是会调用页面拦截器。 我只希望为页面调用页面拦截器。 我该如何做到这一点?
假设您为页面使用一致的命名方案,请使用 – 例如,如果您的外部可见页面URL以.html
结尾,请指定:
虽然拥有这样的“扩展”并不是非常RESTful – 您可能更喜欢使用以下方案:
- GET of
/user/{id}
=返回用户/user/{id}
用户对象,JSON格式 - POST到
/user/{id}
=从JSON对象更新用户对象 - GET到
/user/page/{id}
=返回用户{id}的HTML页面 - 等等
然后你可以使用一个很好的可读,语义映射,如:
这将适用于任何“深度”的URL结构。
编辑:好的所以看起来使用mvc:interceptors样式的bean声明似乎不会给你表达你需要通过模式而不是包含来指定排除 。
从我在本博客中可以看出,使用更详细的HandlerMapping
方法将允许您反转匹配逻辑 – 您可以指定不匹配的内容以获得您需要的内容:
0 /statics/** /data/**
(对于上述代码片段的格式化道歉,Markdown认为 /**
是评论:-)
mvc:拦截器现在支持排除特定的映射。 目前它仅在Spring 3.2.0.M2中可用。 您可以在JIRA项目中找到更多相关信息(现已解决): https : //jira.springsource.org/browse/SPR-6570