【发布时间】:2016-08-12 06:53:17
【问题描述】:
我有一个简单的 Spring MVC 应用程序,我想处理 404 Not found exceptions in my Advice Controller 类
配置:
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{WebConfig.class};
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{RootConfig.class, SecurityConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addListener(new SessionListener());
FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encodingFilter", new CharacterEncodingFilter());
encodingFilter.setInitParameter("encoding", "UTF-8");
encodingFilter.setInitParameter("forceEncoding", "true");
encodingFilter.addMappingForUrlPatterns(null, true, "/*");
}
}
控制器:
@Controller
@RequestMapping("/")
public class HomeController {
@RequestMapping(value = "/error/", method = RequestMethod.GET)
public String error(){return "error";}
}
控制器建议:
@ControllerAdvice
public class AdviceController {
@ExceptionHandler(MyOwnException.class)
@ResponseStatus(value= HttpStatus.BAD_REQUEST)
public String checkoutException(CheckoutException e, HttpServletRequest httpServletRequest) {
return "error";
}
}
当我手动抛出 MyOwnException 时,我可以捕获自己的异常,但我不知道如何捕获 NoHandlerFound 异常。当没有控制器方法来处理请求时,我需要发送 404 错误代码和适当的 error.jsp 页面
【问题讨论】:
标签: java spring spring-mvc