package com.github.ltsopensource.admin.web.support;
import com.github.ltsopensource.admin.web.vo.RestfulResponse;
import com.github.ltsopensource.core.json.JSON;
import com.github.ltsopensource.core.logger.Logger;
import com.github.ltsopensource.core.logger.LoggerFactory;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
/**
* @author Robert HG (254963746@qq.com) on 6/7/15.
*/
public class ExceptionHandlerResolver implements HandlerExceptionResolver {
private static final Logger LOGGER = LoggerFactory.getLogger("[LTS-Admin]");
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// ajax
if (AjaxUtils.isAjaxRequest(request)) {
PrintWriter writer = null;
try {
writer = response.getWriter();
RestfulResponse restfulResponse = new RestfulResponse();
restfulResponse.setSuccess(false);
StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
restfulResponse.setMsg(sw.toString());
String json = JSON.toJSONString(restfulResponse);
assert json != null;
writer.write(json);
writer.flush();
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
}
} else {
LOGGER.error(ex.getMessage(), ex);
// request.setAttribute("message", ex.getMessage());
// return new ModelAndView("common/error");
}
return null;
}
}