java - 使用 Java 配置在 Spring 中重定向 404 错误

标签 java spring spring-mvc

如你所知,在 XML 中,配置它的方式是:

<error-page>
    <error-code>404</error-code>
    <location>/my-custom-page-not-found.html</location>
</error-page>

但我还没有找到在 Java 配置中执行此操作的方法。我尝试的第一种方法是:

@RequestMapping(value = "/**")
public String Error(){
    return "error";
}

它似乎可以工作,但是在检索资源时会发生冲突。

有办法吗?

最佳答案

在 Spring Framework 中,有多种处理异常的方法(尤其是 404 错误)。这是 documentation link .

  • 首先,您仍然可以在 web.xml 中使用 error-page 标签,自定义错误页面。这是 example .
  • 第二,你可以为所有的 Controller 使用一个@ExceptionHandler,像这样:

    @ControllerAdvice
    public class ControllerAdvisor {
    
         @ExceptionHandler(NoHandlerFoundException.class)
         public String handle(Exception ex) {
    
            return "404";//this is view name
        }
    }
    

    为此,请设置 throwExceptionIfNoHandlerFound web.xml 中 DispatcherServlet 的属性为 true:

    <init-param>
        <param-name>throwExceptionIfNoHandlerFound</param-name>
        <param-value>true</param-value>
    </init-param>
    

    您还可以将一些对象传递给错误 View ,请参阅 javadoc为此。

关于java - 使用 Java 配置在 Spring 中重定向 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23574869/

相关文章:

java - 带有动态 where 子句的 Spring data JPA

java - 使用 Java 为操作系统设计我的浏览器

spring - 无法删除 JSESSIONID cookie

java - Spring 4 中的 DeferredResult 是否支持 Servlet 3.1 (Read|Write)Listener?

java - 操纵百分比 - 取消保留更改

java - 返回数组中包含等于槽索引的值的槽数量的计数

java - 带有 Spring 示例失败的嵌入式 Jetty

java - 基于模块化Spring的应用程序

java - Caused by: java.lang.IllegalArgumentException: error at::0 找不到引用的切入点

javascript - 如何在 ajax 中获取从 Controller 返回的模型的值?