【发布时间】:2014-05-25 09:23:18
【问题描述】:
这是我用于将未映射的请求重定向到 404 页面的代码
@RequestMapping("/**")
public ModelAndView redirect() {
ModelAndView mv = new ModelAndView();
mv.setViewName("errorPage");
return mv;
}
上面的代码工作正常,但问题在于 css 和 js 文件等 Web 资源 也进入这个重定向方法,它没有加载任何文件。但是我的调度程序 servlet 中已经有了这段代码,但是 spring 控制器无法识别这个资源映射。
<mvc:resources mapping="/resources/**" location="/WEB-INF/web-resources/" />
所以我在请求映射中尝试了一些 regex 表达式 来否定资源 url 像这样
@RequestMapping("/{^(?!.*resources/**)}**")
public ModelAndView redirect() {
ModelAndView mv = new ModelAndView();
mv.setViewName("errorPage");
return mv;
}
但这并没有按预期工作..因此,如果有人可以提供帮助,那就太好了:)
【问题讨论】:
-
您使事情变得复杂,只需更改 URL 的处理顺序,/** 必须始终位于最后。你能添加你的配置吗?
-
是的,即使 /resources/** 使用重定向方法,我也尝试将 /** 作为最后一个
-
如上所述,请将您的配置添加到问题中。
-
你的意思是 dipatcher servlet.xml ?
-
web.xml 和你的 servlet.xml...
标签: java spring spring-mvc http-status-code-404