private ModelAndView constructModelViewForNode(Node node, FlowSession session, String provider, String tree) { Map<String, Object> params = new HashMap<String, Object>(); params.put(FLOW_SESSION_ID_FIELD, session.getSessionId()); treeEventProcessor.sendActionsBefore(node, params); ModelAndView mav = new ModelAndView(); mav.setViewName(templateNameFor(provider, NODE_TEMPLATE_NAME)); mav.addObject("treeName", tree); mav.addObject("node", node); mav.addObject("provider", provider); mav.addObject("language", session.getLanguage()); mav.addObject("escape", new StringEscapeUtils()); mav.addObject("maxDigits", maxDigits(node)); mav.addObject("maxTimeout", maxTimeout(node)); mav.addObject("transitionKeyEndMarker", transitionKeyEndMarker(node)); mav.addObject("isUserInputNeeded", isUserInputNeeded(node)); session.setCurrentNode(node); return mav; }