DefaultExceptionHandler.java
package cn.home1.oss.lib.errorhandle.internal;
import cn.home1.oss.lib.webmvc.api.RequestResolver;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ControllerAdvice // for @ExceptionHandler methods
public class DefaultExceptionHandler {
@Autowired
@Setter
private RestfulExceptionHandler restfulExceptionHandler;
@Autowired
@Setter
private TemplateExceptionHandler templateExceptionHandler;
@Autowired
@Setter
private RequestResolver requestResolver;
@ExceptionHandler(Throwable.class)
public ModelAndView resolveAndHandle( //
final HttpServletRequest request, //
final HttpServletResponse response, //
final Throwable throwable) {
final ModelAndView result;
if (this.requestResolver.isAjaxRequest(request)) {
result = this.restfulExceptionHandler.resolveAndHandle(request, response, throwable);
} else {
result = this.templateExceptionHandler.resolveAndHandle(request, response, throwable);
}
return result;
}
}