protected TemplateModel createModel(ObjectWrapper wrapper) throws Throwable { HttpServletRequest request = super.getRequestContext().getRequest(); HttpServletResponse response = super.getRequestContext().getResponse(); ServletContext servletContext = request.getSession().getServletContext(); AllHttpScopesHashModel hashModel = new AllHttpScopesHashModel( wrapper, servletContext, request); // super.createModel(wrapper, servletContext, request, response); ControllerServlet servlet = new ControllerServlet(); MockServletConfig config = new MockServletConfig(servletContext); servlet.init(config); ServletContextHashModel newServletContextModel = new ServletContextHashModel(servlet, wrapper); ServletContextHashModel servletContextModel = new ServletContextHashModel(servlet, wrapper); servletContext.setAttribute(ATTR_APPLICATION_MODEL, servletContextModel); TaglibFactory taglibs = new TaglibFactory(servletContext); servletContext.setAttribute(ATTR_JSP_TAGLIBS_MODEL, taglibs); hashModel.putUnlistedModel(FreemarkerServlet.KEY_APPLICATION, newServletContextModel); hashModel.putUnlistedModel(FreemarkerServlet.KEY_APPLICATION_PRIVATE, newServletContextModel); hashModel.putUnlistedModel(FreemarkerServlet.KEY_JSP_TAGLIBS, taglibs); HttpRequestHashModel requestModel = new HttpRequestHashModel(request, response, wrapper); request.setAttribute(ATTR_REQUEST_MODEL, requestModel); hashModel.putUnlistedModel(FreemarkerServlet.KEY_REQUEST_PRIVATE, requestModel); return hashModel; }
private static TemplateModel createModel(PageContext pageContext, Map<String, Object> map) { ObjectWrapper wrapper = ObjectWrapper.DEFAULT_WRAPPER; HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); HttpServletResponse response = (HttpServletResponse) pageContext.getResponse(); HttpServlet servlete = new ProxyServlet(pageContext.getServletConfig(), pageContext.getServletContext()); ServletContextHashModel servletContextModel = new ServletContextHashModel(servlete, wrapper); ServletActionContext.getServletContext() .setAttribute(ATTR_APPLICATION_MODEL, servletContextModel); TaglibFactory taglibs = new TaglibFactory(ServletActionContext.getServletContext()); ServletActionContext.getServletContext().setAttribute(ATTR_JSP_TAGLIBS_MODEL, taglibs); AllHttpScopesHashModel params = new AllHttpScopesHashModel(wrapper, pageContext.getServletContext(), request); params.putUnlistedModel(KEY_APPLICATION, servletContextModel); params.putUnlistedModel(KEY_APPLICATION_PRIVATE, servletContextModel); params.putUnlistedModel( KEY_JSP_TAGLIBS, (TemplateModel) ServletActionContext.getServletContext().getAttribute(ATTR_JSP_TAGLIBS_MODEL)); // Create hash model wrapper for session HttpSessionHashModel sessionModel; HttpSession session = request.getSession(false); sessionModel = (HttpSessionHashModel) session.getAttribute(ATTR_SESSION_MODEL); if (sessionModel == null) { sessionModel = new HttpSessionHashModel(session, wrapper); session.setAttribute(ATTR_SESSION_MODEL, sessionModel); } params.putUnlistedModel(KEY_SESSION, sessionModel); // Create hash model wrapper for request HttpRequestHashModel requestModel = (HttpRequestHashModel) request.getAttribute(ATTR_REQUEST_MODEL); if (requestModel == null || requestModel.getRequest() != request) { requestModel = new HttpRequestHashModel(request, response, wrapper); request.setAttribute(ATTR_REQUEST_MODEL, requestModel); request.setAttribute( ATTR_REQUEST_PARAMETERS_MODEL, new HttpRequestParametersHashModel(request)); } params.putUnlistedModel(KEY_REQUEST, requestModel); params.putUnlistedModel(KEY_INCLUDE, new IncludePage(request, response)); params.putUnlistedModel(KEY_REQUEST_PRIVATE, requestModel); // Create hash model wrapper for request parameters HttpRequestParametersHashModel requestParametersModel = (HttpRequestParametersHashModel) request.getAttribute(ATTR_REQUEST_PARAMETERS_MODEL); params.putUnlistedModel(KEY_REQUEST_PARAMETERS, requestParametersModel); // 将用户数据放入model中 params.putAll(map); return params; }