为了账号安全,请及时绑定邮箱和手机立即绑定

如何处理ajax和页面调用的异常

如何处理ajax和页面调用的异常

繁星点点滴滴 2021-09-29 13:24:33
我们正在研究 spring boot UI 应用程序,因为它是一个 UI 应用程序,我们使用 ajax 调用进行一些操作,以及普通的页面调用(简单地调用请求映射 url)。这里的问题是,在进行 ajax 调用以及正常的页面调用(如果它被相同类型的异常捕获)时,如何处理,比如说 DataAccessException    @ExceptionHandler(DataAccessException.class)        public ModelAndView handleError(HttpServletRequest req, Exception ex) {    logger.error("Request: " + req.getRequestURL() + " raised " + ex);    ModelAndView mav = new ModelAndView();    mav.addObject("exception", ex);    mav.addObject("url", req.getRequestURL());    mav.setViewName("error");    return mav;  }这个数据访问异常应该同时为ajax请求和普通页面调用提供服务,但ajax响应不应该是一个ModelAndView。
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

我尝试过以下方法,并且有效


  @ExceptionHandler(DataAccessException.class)

        public Object handleError(HttpServletRequest req, DataAccessException ex) {

    logger.error("Request: " + req.getRequestURL() + " raised " + ex);

if("XMLHttpRequest".equals(request.getHeader("X-Requested-With")))

        {       

        ResponseEntity<String> dataExceptionRes=null;

dataExceptionRes=new ResponseEntity<String>(HttpStatus.FORBIDDEN);

return dataExceptionRes;

}

else{

    ModelAndView mav = new ModelAndView();

    mav.addObject("exception", ex);

    mav.addObject("url", req.getRequestURL());

    mav.setViewName("error");

    return mav;

}

  }


查看完整回答
反对 回复 2021-09-29
?
Qyouu

TA贡献1786条经验 获得超11个赞

一种方法是确保请求是可区分的,例如所有“正常页面”请求都以 结尾.html,因此它们的错误响应负载也应该是 HTML 页面,而例如所有其他请求将发送带有错误响应的 JSON 负载。

当然,更 RESTful 的方式是内容协商,即使对于错误响应,如果无法协商通用格式,也可能使用纯文本默认值。


查看完整回答
反对 回复 2021-09-29
  • 2 回答
  • 0 关注
  • 195 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信