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

我们正在研究 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。


繁星点点滴滴
浏览 196回答 2
2回答

暮色呼如

我尝试过以下方法,并且有效&nbsp; @ExceptionHandler(DataAccessException.class)&nbsp; &nbsp; &nbsp; &nbsp; public Object handleError(HttpServletRequest req, DataAccessException ex) {&nbsp; &nbsp; logger.error("Request: " + req.getRequestURL() + " raised " + ex);if("XMLHttpRequest".equals(request.getHeader("X-Requested-With")))&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ResponseEntity<String> dataExceptionRes=null;dataExceptionRes=new ResponseEntity<String>(HttpStatus.FORBIDDEN);return dataExceptionRes;}else{&nbsp; &nbsp; ModelAndView mav = new ModelAndView();&nbsp; &nbsp; mav.addObject("exception", ex);&nbsp; &nbsp; mav.addObject("url", req.getRequestURL());&nbsp; &nbsp; mav.setViewName("error");&nbsp; &nbsp; return mav;}&nbsp; }

Qyouu

一种方法是确保请求是可区分的,例如所有“正常页面”请求都以 结尾.html,因此它们的错误响应负载也应该是 HTML 页面,而例如所有其他请求将发送带有错误响应的 JSON 负载。当然,更 RESTful 的方式是内容协商,即使对于错误响应,如果无法协商通用格式,也可能使用纯文本默认值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java