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

需要渲染自定义标签

设置标签类型([]、<>),[]这种标记解析要快些 默认是自动检测语法  
//  自动 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

第一种:

//获取servletContext
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext(); 
ServletContext servletContext = webApplicationContext.getServletContext();
ApplicationContext applicationContext = SpringContextUtil.getApplicationContext();
// 取出上下文
Map<String, TemplateDirectiveModel> beans = applicationContext.getBeansOfType(TemplateDirectiveModel.class);
// 获取实现TemplateDirectiveModel的bean
for (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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值