在Spring MVC中,如果我使用常规提交方式提交Web表单,则可以处理web.xml中的404异常,如下所示:

    <error-page>
        <error-code>404</error-code>
        <location>404.jsp</location>
    </error-page>
    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>404.jsp</location>
    </error-page>


但是如何从ajax调用中拦截404错误(可能使用@ControllerAdvice)并将自定义异常传递给xhr.responseText中的jquery

最佳答案

您可以使用默认控制器处理未映射的请求,并在响应中写入错误:

@Controller
public class DefaultController {

    @RequestMapping
    public void unmappedRequest(HttpServletResponse response) throws IOException {
        response.setStatus(HttpServletResponse.SC_NOT_FOUND);
        response.getWriter().write("404 error mesage");
    }
}


然后,您可以在JavaScript中获取错误:

$.post("/servlet/wrong/url", function() {
     alert("success");
})
.fail(function(jqXHR) {
     alert(jqXHR.responseText);
});


显然,这仅适用于您的DispatcherServlet处理的请求,

10-07 19:32
查看更多