ユーザクエリで、サービスにリクエストしたHTMLページ(ページ全体ではない)を受信したデータとともにレンダリングするWebページがありますAJAX。SpringMVC:AJAXリクエストが失敗した場合の表示エラー表示
サービスを呼び出すための2つの方法があります:APIを通じて
- :my.website.com/api/person/John - >これは生のJSONを返す
- AJAX要求 :my.website.com/person#John - >内部的にこれはAPIを呼び出し、それが
起こっている事がinternal error
が発生した場合ということですS:
- APIを通じてを呼び出す:私のカスタムエラービューが表示されます - この望ましい動作
- AJAX要求で呼び出すwhenn:カスタムエラービューが表示されません - 代わりにされて起こることすべてHTMLテーブルが満たされない - 悪い動作。私はここでエラービューをしたい!
ジャバスクリプト
function displayPersonData(template, person) {
var url = "/api/person/" + person;
$.getJSON(url, function (data) {
renderHtmlTable(template, data);
});
}
APIcontroller.java
@RequestMapping(value = "api/person/{person}", produces = "application/json", method = RequestMethod.GET)
public @ResponseBody Person execute(@PathVariable(value = "person") String person) {
Random r = new Random();
if(r.nextDouble() > 0.5) {
return proxy.getPersonData(person); // returns JSON
} else {
throw new MyCustomException("Test");
}
}
エラーController.java
@ExceptionHandler(MyCustomException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ModelAndView errorCallingService() {
LOG.error(MessageFormat.format("Call to %s failed.", PERSON_SERVICE)); // the logs gets triggered successfuly
return new ModelAndView("error_view.jsp"); // error_view doesnt get displayed
}
エラーコントローラがスローされたExceptionを正常にトリガし、ログを生成します。しかし何らかの理由でerror_view.jsp
が表示されません。 AJAXで呼び出されたときのみ。
解決策はありますか?エラーページにリダイレクトする必要はありません。my.website.com/exception_view