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

com.github.lit.support.web.ModelAttributeInterceptor Maven / Gradle / Ivy

package com.github.lit.support.web;

import com.github.lit.constant.ResultConst;
import com.github.lit.page.PageInfo;
import com.github.lit.page.PageList;
import com.github.lit.support.util.SpelUtils;
import com.github.lit.support.web.annotation.ViewName;
import org.springframework.ui.ModelMap;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;

/**
 * User : liulu
 * Date : 2017/3/20 20:21
 * version $Id: ModelAttributeInterceptor.java, v 0.1 Exp $
 */
public class ModelAttributeInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        if (modelAndView == null) {
            return;
        }
        ModelMap modelMap = modelAndView.getModelMap();
        modelMap.put(ResultConst.SUCCESS, true);

        // 处理自定义视图名称
        if (request.getRequestURI().endsWith(".json")) {
            modelAndView.setViewName("");
        } else if (handler instanceof HandlerMethod) {
            Method method = ((HandlerMethod) handler).getMethod();
            ViewName viewName = method.getAnnotation(ViewName.class);
            if (viewName != null) {
                String name = viewName.spel() ? SpelUtils.getExpressionValue(viewName.value(), modelMap) : viewName.value();
                modelAndView.setViewName(name);
            }
        }

        // 处理分页信息
        PageInfo pageInfo = null;
        for (Object obj : modelMap.values()) {
            if (obj instanceof PageList) {
                pageInfo = ((PageList) obj).getPageInfo();
                break;
            }
        }
        if (pageInfo != null) {
            modelMap.put(ResultConst.PAGE_INFO, pageInfo);
        }
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy