All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.gallery.db.util.DataBaseExceptionResolver Maven / Gradle / Ivy

package io.gallery.db.util;

import io.gallery.db.exception.DataBaseDataBindingException;
import io.gallery.db.service.impl.DataBaseGenericService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.PrintWriter;
import java.util.LinkedHashMap;
import java.util.Optional;

public class DataBaseExceptionResolver implements HandlerExceptionResolver {
    private static final Log logger = LogFactory.getLog(DataBaseGenericService.class);

    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e) {
        //deal(request, response, e);spring默认处理
        return null;
    }

    /**
     * 处理Ajax请求错误
     *
     * @param request  HttpServletRequest
     * @param response HttpServletResponse
     * @param e        Exception
     */
    protected void dealAjax(HttpServletRequest request, HttpServletResponse response, Exception e) {
        if (DataBaseRequestUtil.isAjax(request)) {// 判断是否Ajax请求
            try {
                response.setContentType("text/html;charset=UTF-8");
                response.setCharacterEncoding("UTF-8");
                PrintWriter writer = response.getWriter();
                writer.write(JSON.toJSONString(new LinkedHashMap() {{
                    put("success", false);
                    put("message", e.getMessage());
                    if (e instanceof DataBaseDataBindingException) {
                        DataBaseDataBindingException dbe = (DataBaseDataBindingException) e;
                        Optional.ofNullable(dbe.getFieldErrors()).ifPresent(errors -> put("fieldErrors", dbe.getFieldErrors()));
                        Optional.ofNullable(dbe.getGlobalErrors()).ifPresent(errors -> put("globalErrors", dbe.getGlobalErrors()));
                    }
                }}));
                writer.flush();
                writer.close();
            } catch (Exception exception) {
                logger.error("Exception resolve error: " + exception.getMessage(), exception.getCause());
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy