我有一个带有自定义404页面的Spring / Tiles 3应用程序。这适用于除静态资源之外的所有内容。
配置:
public class WebApplication implements WebApplicationInitializer {
@Override
public void onStartup(final ServletContext ctx) throws ServletException {
final AnnotationConfigWebApplicationContext webCtx = new AnnotationConfigWebApplicationContext();
webCtx.register(GlobalExceptionHandler.class,...);
webCtx.setServletContext(ctx);
final DispatcherServlet dispatcherServlet = new DispatcherServlet(webCtx);
dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
全局异常处理程序,指向右侧切片视图
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ModelAndView handle(final NoHandlerFoundException exception) {
return new ModelAndView("exceptions/NotFoundException");
}
...
这很好用。
但是,我也有一些静态资源
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
registry.addResourceHandler("/images/**").addResourceLocations("/images/");
}
资源是服务器正常的,但是当我尝试访问不存在的资源时,我从应用程序服务器获取默认的404页面。如何告诉spring将GlobalExceptionHandler用于静态资源?