【发布时间】:2017-06-20 17:19:33
【问题描述】:
我有一个网页,它在用户查询时向服务发出请求,并使用从 AJAX 接收到的数据在其自身上呈现 HTML 表(因此不是整个页面)。
调用服务有两种方式:
- 通过 API:my.website.com/api/person/John --> 这将返回原始 JSON
- AJAX 请求:my.website.com/person#John --> 在内部调用 API,并用它获取的数据填充 HTML 表
正在发生的事情是,如果internal error 发生:
- 通过 API 调用时:显示我的自定义错误视图 - 这是所需的行为
- 当使用 AJAX 请求 调用时:不显示自定义错误视图 - 相反,所发生的只是 HTML 表没有被填充 - 不良行为。我也想要这里的错误视图!
javascript
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");
}
}
错误控制器.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
}
错误控制器成功触发抛出的异常,并生成日志。但由于某种原因,它不显示error_view.jsp。仅在使用 AJAX 调用时。
有解决办法吗?而且我不想重定向到错误页面,只是有这样的 URL 似乎不正确:my.website.com/exception_view
【问题讨论】:
标签: javascript jquery ajax spring error-handling