MVC Java Config – HandlerInterceptor不排除路径
我有一个MVC
Java配置,但是HandlerInterceptor不排除一些模式.
在标有xxx的行上,如果 1)我将addPatterns(“/ **”)和excludePathPatterns(“*.ecxld”)添加到HandlerInterceptor的InterceptorRegistration中,HandlerInterceptor.preHanlde()根本不被调用.例如.addPathPatterns(“/ **”).excludePathPatterns(“*.ecxld”) 2)我只将excludePathPatterns(“*.ecxld”)添加到HandlerInterceptor的InterceptorRegistration中,HandlerInterceptor.preHanlde()仍然被执行. (其他拦截器调用正常). 任何指针赞赏. 谢谢 @Configuration public class MyMVCConfigurerAdapter extends WebMvcConfigurerAdapter { @Override public void addInterceptors(final InterceptorRegistry registry) { registry.addInterceptor(getInterceptorOne()); registry.addInterceptor(getMyHandlerInterceptor()) .excludePathPatterns("*.ecxld"); // **xxx** registry.addInterceptor(getInterceptorTwo() ); } 解决方法
您为包含和排除指定的模式是ant base
path expressions,而不是正常的URL表达式,您将在web.xml中表达,以映射servlet或过滤器.
要排除工作,您还必须包括一个包含路径(正如您已经注意到第二个注释).接下来,将排除模式更改为/**/*.ecxld. 您当前的表达式* .ecxld将匹配file.ecxld,但它不匹配/file.ecxld或甚至/foo/file.ecxld. / ** /部分负责.但是为了使其工作,它还需要一个includePathExpression(代码checks,如果没有includePathExpression忽略excludePathExpression). 所以简单地说你的配置到以下应该可以解决你的问题. @Configuration public class MyMVCConfigurerAdapter extends WebMvcConfigurerAdapter { @Override public void addInterceptors(final InterceptorRegistry registry) { registry.addInterceptor(getInterceptorOne()); registry.addInterceptor(getMyHandlerInterceptor()) .includePathPatterns("/**") .excludePathPatterns("/**/*.ecxld"); registry.addInterceptor(getInterceptorTwo() ); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |