java-ThroweExceptionIfNoHandlerFound不起作用
我试图在完全使用Java配置的Spring MVC应用程序中使用java-ThroweExceptionIfNoHandlerFound不起作用,java,spring,exception,http-status-code-404,Java,Spring,Exception,Http Status Code 404,我试图在完全使用Java配置的Spring MVC应用程序中使用@ControllerAdvice处理404错误 这是我的密码: 公共类WebAppInitializer实现WebApplicationInitializer { @凌驾 启动时的公共void(ServletContext容器) { //创建DispatcherServlet的Spring应用程序上下文 AnnotationConfigWebApplicationContext dispatcherServlet=新的Annota
@ControllerAdvice
处理404错误
这是我的密码:
公共类WebAppInitializer实现WebApplicationInitializer
{
@凌驾
启动时的公共void(ServletContext容器)
{
//创建DispatcherServlet的Spring应用程序上下文
AnnotationConfigWebApplicationContext dispatcherServlet=新的AnnotationConfigWebApplicationContext();
dispatcherServlet.register(WebMvcConfig.class);
dispatcherServlet.setServletContext(容器);
dispatcherServlet.refresh();
CookieHelper cookie=(CookieHelper)dispatcherServlet.getBean(“cookie”);
最终Gson Gson=(Gson)dispatcherServlet.getBean(“Gson”);
//注册并映射DispatcherServlet
ServletRegistration.Dynamic dispatcher=container.addServlet(“dispatcher”,新DispatcherServlet(DispatcherServlet));
dispatcher.addMapping(“/”);
dispatcher.setLoadOnStartup(1);
dispatcher.setInitParameter(“ThroweExceptionIfNoHandlerFound”、“true”);
FilterRegistration.Dynamic filter=container.addFilter(“BaseFilter”,新的BaseFilter(cookie,gson));
setInitParameter(“forceEncoding”、“true”);
addMappingForUrlPatterns(null,true,“/coolers/*”);
addMappingForUrlPatterns(null,true,“/hothouses/*”);
addMappingForUrlPatterns(null,true,“/lang/*”);
addMappingForUrlPatterns(null,true,“/organizations/*”);
addMappingForUrlPatterns(null,true,“/reworks/*”);
addMappingForUrlPatterns(null,true,“/select/*”);
addMappingForUrlPatterns(null,true,“/volumes/*”);
}
}
和我的GlobalExceptionHandlerController:
@ControllerAdvice
公共类GlobalExceptionHandlerController
{
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(未找到HttpStatus.NOT_)
公共字符串句柄(){
System.out.println(“测试”);
返回“错误/索引”;
}
}
NoHandlerFoundException未触发?我遇到了同样的问题,已经解决了。下面给出了解决相同问题的步骤
GlobalExceptionHandler
,并用@ControllerAdvice
@ControllerAdvice
公共类GlobalExceptionHandler
{
@ExceptionHandler(NoHandlerFoundException.class)
公共字符串handleNotFoundError(异常ex)
{
返回“重定向:/yourCustom404page”;
}
}
DispatcherServlet
在未找到处理程序时引发异常。我们可以通过将throweExceptionIfNoHandlerFound
servlet初始化参数设置为true
公共类AppInitializer扩展AbstractAnnotationConfigDispatcherServletInitializer
{
...
@凌驾
受保护的DispatcherServlet createDispatcherServlet(WebApplicationContext servletAppContext)
{
最终DispatcherServlet=(DispatcherServlet)super.createDispatcherServlet(servletAppContext);
setThroweExceptionIfNoHandlerFound(true);
返回servlet;
}
}
b。如果是基于spring mvc xml的配置,请按如下方式初始化dispatcher servlet
调度员
org.springframework.web.servlet.DispatcherServlet
ThroweExceptionIfNoHandlerFound
真的
c。如果弹簧启动spring.resources.add mappings=false
在application.properties或yaml文件中
希望它有帮助您是否正在执行任何会导致NoHandlerFoundException的操作?即使线程较旧,遇到同样的情况,也要给出书面答案,以便它可以帮助其他人。