1

Spring MVC では、通常の送信を使用して Web フォームを送信すると、404 例外を次のように処理できますweb.xml

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

しかし、どのように404ajax 呼び出しからエラーをインターセプトし (おそらく を使用して@ControllerAdvice)、カスタム例外をxhr.responseTextin に渡すのでしょjqueryうか?

4

1 に答える 1

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 によって処理されるリクエストに対してのみ機能します。

于 2013-06-28T07:03:19.230 に答える