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