我的任务是将从 Controller 中的 @RequestMapping 方法抛出的异常作为 JSON 对象暴露给 UI。在谷歌搜索时,我发现了 ControllerAdvice,我想我需要类似的东西。我在所有示例中看到的唯一问题是返回类型——它们正在返回 ModelAndView 而我需要返回一个自定义对象作为返回类型。这是我的示例代码:
Controller 类:
@RequestMapping(value="/abc", method=RequestMethod.GET)
@ResponseBody
public MyModel getResponse(@RequestParam String id,
HttpServletRequest request) throws SQLException
{
boolean exceptionFlag = true;
if (exceptionFlag){
throw new SQLException();
}
return myModel;
}
异常处理类:
@ControllerAdvice
public class ExceptionHandler {
@ExceptionHandler(SQLException.class)
public MyCustomException handleSQLException(SQLException exception)
{
MyCustomException ex = new MyCustomException();
ex.setExceptionCode("MyCode");
ex.setExceptionDescription(exception.getMessage());
return ex;
}
它提示找不到 JSP(WARN:org.apache.jasper.servlet.JspServlet:PWC6117: File "rest\support\abc.jsp"not foundnull)
最佳答案
ExceptionHandler
能很好地捕获 SQLException
吗?
如果是这样,也许这会奏效:
@ControllerAdvice
public class ExceptionHandler {
@ResponseBody
@ExceptionHandler(SQLException.class)
public MyCustomException handleSQLException(SQLException exception) {
MyCustomException ex = new MyCustomException();
ex.setExceptionCode("MyCode");
ex.setExceptionDescription(exception.getMessage());
return ex;
}
}
关于java - @ControllerAdvice Spring - 返回类型作为自定义对象而不是 ModelAndView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23787929/