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