package org.hsweb.web.controller;
import org.hsweb.web.core.exception.BusinessException;
import org.hsweb.web.core.message.ResponseMessage;
import org.hsweb.web.core.utils.WebUtil;
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.servlet.ModelAndView;
import javax.servlet.http.HttpServletResponse;
@ControllerAdvice(annotations = Controller.class)
@Order(10)
public class ControllerExceptionTranslator {
@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);
modelAndView.addObject("absPath", WebUtil.getBasePath(WebUtil.getHttpServletRequest()));
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);
modelAndView.addObject("absPath", WebUtil.getBasePath(WebUtil.getHttpServletRequest()));
return modelAndView;
}
}