From f09d9b3db7f2bb5ed0d5d68bc5ecd10d0d5515a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E6=B5=A9?= Date: Tue, 14 Jun 2016 15:37:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BC=82=E5=B8=B8=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ControllerExceptionTranslator.java | 83 ++++--------------- .../RestControllerExceptionTranslator.java | 60 ++++++++++++++ 2 files changed, 78 insertions(+), 65 deletions(-) create mode 100644 hsweb-web-controller/src/main/java/org/hsweb/web/controller/RestControllerExceptionTranslator.java diff --git a/hsweb-web-controller/src/main/java/org/hsweb/web/controller/ControllerExceptionTranslator.java b/hsweb-web-controller/src/main/java/org/hsweb/web/controller/ControllerExceptionTranslator.java index 5c3355c9b..2fc46eecc 100644 --- a/hsweb-web-controller/src/main/java/org/hsweb/web/controller/ControllerExceptionTranslator.java +++ b/hsweb-web-controller/src/main/java/org/hsweb/web/controller/ControllerExceptionTranslator.java @@ -1,80 +1,33 @@ package org.hsweb.web.controller; -import com.alibaba.fastjson.JSON; -import org.hsweb.web.core.exception.*; +import org.hsweb.web.core.exception.BusinessException; import org.hsweb.web.core.message.ResponseMessage; -import org.springframework.http.HttpStatus; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletResponse; -@ControllerAdvice +@ControllerAdvice(annotations = Controller.class) +@Order(10) public class ControllerExceptionTranslator { - - @ExceptionHandler(ValidationException.class) - @ResponseStatus(HttpStatus.BAD_REQUEST) - @ResponseBody - ResponseMessage handleException(ValidationException exception) { - return ResponseMessage.error(exception.getMessage(), 400); - } - - @ExceptionHandler(org.hsweb.ezorm.exception.ValidationException.class) - @ResponseStatus(HttpStatus.BAD_REQUEST) - @ResponseBody - ResponseMessage handleException(org.hsweb.ezorm.exception.ValidationException exception) { - return ResponseMessage.error(JSON.toJSONString(exception.getValidateResult()), 400); - } - - @ExceptionHandler(BusinessException.class) - @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) - @ResponseBody - ResponseMessage handleException(BusinessException exception) { - return ResponseMessage.error(exception.getMessage(), exception.getStatus()); + ModelAndView handleExceptionView(BusinessException exception, HttpServletResponse response) { + response.setStatus(exception.getStatus()); + ModelAndView modelAndView = new ModelAndView("error/" + exception.getStatus()); + modelAndView.addAllObjects(ResponseMessage.error(exception.getMessage(), exception.getStatus()).toMap()); + modelAndView.addObject("exception", exception); + return modelAndView; } - - @ExceptionHandler(AuthorizeException.class) - @ResponseStatus(HttpStatus.UNAUTHORIZED) - @ResponseBody - ResponseMessage handleException(AuthorizeException exception) { - return ResponseMessage.error(exception.getMessage(), exception.getStatus()); + @ExceptionHandler(Throwable.class) + ModelAndView handleExceptionView(Throwable exception, HttpServletResponse response) { + response.setStatus(500); + ModelAndView modelAndView = new ModelAndView("error/" + 500); + modelAndView.addAllObjects(ResponseMessage.error(exception.getMessage(), 500).toMap()); + modelAndView.addObject("exception", exception); + return modelAndView; } - - @ExceptionHandler(AuthorizeForbiddenException.class) - @ResponseStatus(HttpStatus.FORBIDDEN) - @ResponseBody - ResponseMessage handleException(AuthorizeForbiddenException exception) { - return ResponseMessage.error(exception.getMessage(), exception.getStatus()); - } - - - @ExceptionHandler(NotFoundException.class) - @ResponseStatus(HttpStatus.NOT_FOUND) - @ResponseBody - ResponseMessage handleException(NotFoundException exception) { - return ResponseMessage.error(exception.getMessage(), 404); - } - -// @ExceptionHandler(BusinessException.class) -// ModelAndView handleExceptionView(BusinessException exception, HttpServletResponse response) { -// response.setStatus(exception.getStatus()); -// ModelAndView modelAndView = new ModelAndView("error/" + exception.getStatus()); -// modelAndView.addAllObjects(ResponseMessage.error(exception.getMessage(), exception.getStatus()).toMap()); -// modelAndView.addObject("exception", exception); -// return modelAndView; -// } -// -// @ExceptionHandler(Throwable.class) -// ModelAndView handleExceptionView(Throwable exception, HttpServletResponse response) { -// response.setStatus(500); -// ModelAndView modelAndView = new ModelAndView("error/" + 500); -// modelAndView.addAllObjects(ResponseMessage.error(exception.getMessage(), 500).toMap()); -// modelAndView.addObject("exception", exception); -// return modelAndView; -// } } \ No newline at end of file diff --git a/hsweb-web-controller/src/main/java/org/hsweb/web/controller/RestControllerExceptionTranslator.java b/hsweb-web-controller/src/main/java/org/hsweb/web/controller/RestControllerExceptionTranslator.java new file mode 100644 index 000000000..6f0a6caa1 --- /dev/null +++ b/hsweb-web-controller/src/main/java/org/hsweb/web/controller/RestControllerExceptionTranslator.java @@ -0,0 +1,60 @@ +package org.hsweb.web.controller; + +import com.alibaba.fastjson.JSON; +import org.hsweb.web.core.exception.*; +import org.hsweb.web.core.message.ResponseMessage; +import org.springframework.core.annotation.Order; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.ExceptionHandler; + +@ControllerAdvice(annotations = RestController.class) +@Order(1) +public class RestControllerExceptionTranslator { + + @ExceptionHandler(ValidationException.class) + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ResponseBody + ResponseMessage handleException(ValidationException exception) { + return ResponseMessage.error(exception.getMessage(), 400); + } + + @ExceptionHandler(org.hsweb.ezorm.exception.ValidationException.class) + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ResponseBody + ResponseMessage handleException(org.hsweb.ezorm.exception.ValidationException exception) { + return ResponseMessage.error(JSON.toJSONString(exception.getValidateResult()), 400); + } + + + @ExceptionHandler(BusinessException.class) + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + @ResponseBody + ResponseMessage handleException(BusinessException exception) { + return ResponseMessage.error(exception.getMessage(), exception.getStatus()); + } + + + @ExceptionHandler(AuthorizeException.class) + @ResponseStatus(HttpStatus.UNAUTHORIZED) + @ResponseBody + ResponseMessage handleException(AuthorizeException exception) { + return ResponseMessage.error(exception.getMessage(), exception.getStatus()); + } + + @ExceptionHandler(AuthorizeForbiddenException.class) + @ResponseStatus(HttpStatus.FORBIDDEN) + @ResponseBody + ResponseMessage handleException(AuthorizeForbiddenException exception) { + return ResponseMessage.error(exception.getMessage(), exception.getStatus()); + } + + + @ExceptionHandler(NotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + @ResponseBody + ResponseMessage handleException(NotFoundException exception) { + return ResponseMessage.error(exception.getMessage(), 404); + } + +} \ No newline at end of file