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