package com.base;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/**
*/
@Component
public class SharedRenderVariableInterceptor extends HandlerInterceptorAdapter implements InitializingBean {
// 系统启动并初始化一次的变量
private Map<String, Object> globalRenderVariables = new HashMap<String, Object>();
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
if (modelAndView == null) {
return;
}
String viewName = modelAndView.getViewName();
if (viewName != null && !viewName.startsWith("redirect:")) {
modelAndView.addAllObjects(globalRenderVariables);
modelAndView.addAllObjects(perRequest(request, response));
}
}
protected Map<String, Object> perRequest(HttpServletRequest request, HttpServletResponse response) {
HashMap<String, Object> model = new HashMap<String, Object>();
model.put("ctx", request.getContextPath());
return model;
}
// 用于初始化 sharedRenderVariables, 全局共享变量请尽量用global前缀
private void initSharedRenderVariables() {
}
// 在系统启动时会执行
public void afterPropertiesSet() throws Exception {
initSharedRenderVariables();
}
}