2013-06-26 15 views
1

在Spring MVC,如果我使用正常的Web表單遞交我可以處理web.xml 404例外,因爲如何處理404例外阿賈克斯調用,Spring MVC的3.2,@ControllerAdvice

<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> 

但如何攔截404提交錯誤來自ajax調用(可能使用@ControllerAdvice)並將自定義例外傳遞給xhr.responseTextjquery

+0

您是否使用RESTful Web服務? – Pastur

+0

@Abel Pastur不,只是普通的春天mvc應用程序。 – Alex

回答

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處理的請求,