如何处理由ajax,Spring MVC 3.2,@ ControllerAdvice调用的404异常

时间:2013-06-26 14:25:23

标签: java spring spring-mvc

在Spring MVC中,如果我使用普通提交提交网页表单,我可以在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

1 个答案:

答案 0 :(得分:1)

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

@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处理的请求