Freemarker静态化时渲染自定义标签

来源:互联网 发布:dreamweaver淘宝首页 编辑:程序博客网 时间:2024/05/21 11:17

需要渲染自定义标签

设置标签类型([]、<>),[]这种标记解析要快些 默认是自动检测语法  
//  自动 AUTO_DETECT_TAG_SYNTAX  
//  尖括号 ANGLE_BRACKET_TAG_SYNTAX  
//  方括号 SQUARE_BRACKET_TAG_SYNTAX

属性设置

Configuration cfg = new Configuration();cfg.setTagSyntax(Configuration.AUTO_DETECT_TAG_SYNTAX);

加载 获取实现TemplateDirectiveModel的bean

第一种:

//获取servletContextWebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext(); ServletContext servletContext = webApplicationContext.getServletContext();ApplicationContext applicationContext = SpringContextUtil.getApplicationContext();// 取出上下文Map<String, TemplateDirectiveModel> beans = applicationContext.getBeansOfType(TemplateDirectiveModel.class);// 获取实现TemplateDirectiveModel的beanfor (String key : beans.keySet()) {<span style="white-space:pre"></span>Object obj = beans.get(key);<span style="white-space:pre"></span>if (obj != null && obj instanceof TemplateDirectiveModel) {<span style="white-space:pre"></span>freemarker_cfg.setSharedVariable(key, obj);<span style="white-space:pre"></span>}}


第二种:

//加载实现TemplateDirectiveModel的自定义标签Bean对象Configuration cfg = new Configuration();FreeMarkerConfigExtend ext = SpringContextUtil.getBean("freemarkerConfig",FreeMarkerConfigExtend.class);/**获取配置文件里的 Configuration.settings 设到当前Cfg里*/Configuration vcfg = ext.getConfiguration();Map<String,String> sets = vcfg.getSettings();Set<String> keys = vcfg.getSharedVariableNames();for (String key : keys) {TemplateModel value = vcfg.getSharedVariable(key);cfg.setSharedVariable(key, value);}Properties setting = new Properties(); setting.putAll(sets);cfg.setSettings(setting);



0 0
原创粉丝点击