📄 freemarkerworker.java
字号:
public static Object getArgObject(Map args, String key, Map templateContext) { //SimpleScalar s = null; Object o = null; Object returnVal = null; o = args.get(key); returnVal = unwrap(o); if (returnVal == null) { try { if (templateContext != null) { returnVal = templateContext.get(key); } } catch (ClassCastException e2) { //return null; } } return returnVal; } /** * Gets BeanModel from FreeMarker context and returns the object that it wraps. * @param varName the name of the variable in the FreeMarker context. * @param env the FreeMarker Environment */ public static Object getWrappedObject(String varName, Environment env) { Object obj = null; try { obj = env.getVariable(varName); if (obj != null) { if (obj == TemplateModel.NOTHING) { obj = null; } else if (obj instanceof BeanModel) { BeanModel bean = (BeanModel) obj; obj = bean.getWrappedObject(); } else if (obj instanceof SimpleScalar) { obj = obj.toString(); } } } catch (TemplateModelException e) { Debug.logInfo(e.getMessage(), module); } return obj; } /** * Gets BeanModel from FreeMarker context and returns the object that it wraps. * @param varName the name of the variable in the FreeMarker context. * @param env the FreeMarker Environment */ public static BeanModel getBeanModel(String varName, Environment env) { BeanModel bean = null; try { bean = (BeanModel) env.getVariable(varName); } catch (TemplateModelException e) { Debug.logInfo(e.getMessage(), module); } return bean; } public static Object get(SimpleHash args, String key) { Object returnObj = null; Object o = null; try { o = args.get(key); } catch(TemplateModelException e) { Debug.logVerbose(e.getMessage(), module); return returnObj; } returnObj = unwrap(o); if (returnObj == null) { Object ctxObj = null; try { ctxObj = args.get("context"); } catch(TemplateModelException e) { Debug.logInfo(e.getMessage(), module); return returnObj; } Map ctx = null; if (ctxObj instanceof BeanModel) { ctx = (Map)((BeanModel)ctxObj).getWrappedObject(); returnObj = ctx.get(key); } /* try { Map templateContext = (Map)FreeMarkerWorker.getWrappedObject("context", env); if (templateContext != null) { returnObj = (String)templateContext.get(key); } } catch(ClassCastException e2) { //return null; } */ } return returnObj; } public static Object unwrap(Object o) { Object returnObj = null; if (o == TemplateModel.NOTHING) { returnObj = null; } else if (o instanceof SimpleScalar) { returnObj = o.toString(); } else if (o instanceof BeanModel) { returnObj = ((BeanModel)o).getWrappedObject(); } return returnObj; } public static void checkForLoop(String path, Map ctx) throws IOException { List templateList = (List)ctx.get("templateList"); if (templateList == null) { templateList = new ArrayList(); } else { if (templateList.contains(path)) { throw new IOException(path + " has already been visited."); } } templateList.add(path); ctx.put("templateList", templateList); return; } public static Map createEnvironmentMap(Environment env) { Map templateRoot = new HashMap(); Set varNames = null; try { varNames = env.getKnownVariableNames(); } catch (TemplateModelException e1) { Debug.logError(e1, "Error getting FreeMarker variable names, will not put pass current context on to sub-content", module); } if (varNames != null) { Iterator varNameIter = varNames.iterator(); while (varNameIter.hasNext()) { String varName = (String) varNameIter.next(); //freemarker.ext.beans.StringModel varObj = (freemarker.ext.beans.StringModel ) varNameIter.next(); //Object varObj = varNameIter.next(); //String varName = varObj.toString(); templateRoot.put(varName, FreeMarkerWorker.getWrappedObject(varName, env)); } } return templateRoot; } public static void saveContextValues(Map context, String [] saveKeyNames, Map saveMap ) { //Map saveMap = new HashMap(); for (int i=0; i<saveKeyNames.length; i++) { String key = (String)saveKeyNames[i]; Object o = context.get(key); if (o instanceof Map) o = new HashMap((Map)o); else if (o instanceof List) o = new ArrayList((List)o); saveMap.put(key, o); } return ; } public static Map saveValues(Map context, String [] saveKeyNames) { Map saveMap = new HashMap(); for (int i=0; i<saveKeyNames.length; i++) { String key = (String)saveKeyNames[i]; Object o = context.get(key); if (o instanceof Map) o = new HashMap((Map)o); else if (o instanceof List) o = new ArrayList((List)o); saveMap.put(key, o); } return saveMap; } public static void reloadValues(Map context, Map saveValues, Environment env ) { Set keySet = saveValues.keySet(); Iterator it = keySet.iterator(); while (it.hasNext()) { String key = (String)it.next(); Object o = saveValues.get(key); if (o instanceof Map) { Map map = new HashMap(); map.putAll((Map)o); context.put(key, map); } else if (o instanceof List) { List list = new ArrayList(); list.addAll((List)o); context.put(key, list); } else { context.put(key, o); } env.setVariable(key, autoWrap(o, env)); } return; } public static void removeValues(Map context, String [] removeKeyNames ) { for (int i=0; i<removeKeyNames.length; i++) { String key = (String)removeKeyNames[i]; context.remove(key); } return; } public static void overrideWithArgs(Map ctx, Map args) { Set keySet = args.keySet(); Iterator it = keySet.iterator(); while (it.hasNext()) { String key = (String)it.next(); Object obj = args.get(key); //if (Debug.infoOn()) Debug.logInfo("in overrideWithArgs, key(3):" + key + " obj:" + obj + " class:" + obj.getClass().getName() , module); if (obj != null) { if (obj == TemplateModel.NOTHING) { ctx.put(key, null); } else { Object unwrappedObj = unwrap(obj); if (unwrappedObj == null) unwrappedObj = obj; ctx.put(key, unwrappedObj.toString()); } } else { ctx.put(key, null); } } return; } public static void convertContext(Map ctx) { Set keySet = ctx.keySet(); Iterator it = keySet.iterator(); while (it.hasNext()) { String key = (String)it.next(); Object obj = ctx.get(key); if (obj != null) { Object unwrappedObj = unwrap(obj); if (unwrappedObj != null) { ctx.put(key, unwrappedObj); } } } return; } public static void getSiteParameters(HttpServletRequest request, Map ctx) { if (request == null) { return; } if (ctx == null) { throw new IllegalArgumentException("Error in getSiteParameters, context/ctx cannot be null"); } ServletContext servletContext = request.getSession().getServletContext(); String rootDir = (String)ctx.get("rootDir"); String webSiteId = (String)ctx.get("webSiteId"); String https = (String)ctx.get("https"); if (UtilValidate.isEmpty(rootDir)) { rootDir = servletContext.getRealPath("/"); ctx.put("rootDir", rootDir); } if (UtilValidate.isEmpty(webSiteId)) { webSiteId = (String) servletContext.getAttribute("webSiteId"); ctx.put("webSiteId", webSiteId); } if (UtilValidate.isEmpty(https)) { https = (String) servletContext.getAttribute("https"); ctx.put("https", https); } return; } public static TemplateModel autoWrap(Object obj, Environment env) { BeansWrapper wrapper = BeansWrapper.getDefaultInstance(); TemplateModel templateModelObj = null; try { templateModelObj = wrapper.wrap(obj); } catch(TemplateModelException e) { throw new RuntimeException(e.getMessage()); } return templateModelObj; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -