FreeMarker自定義指令自動加載
FreeMarker自定義指令目前大多項目都需要在XML中配置,比如
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape" />
</map>
</property>
<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
使用自動加載只需要制定好一定的規則,就可以在每次工程啟動時自動加載所有自定義指令 </div>
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape" />
</map>
</property>
<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
使用自動加載只需要制定好一定的規則,就可以在每次工程啟動時自動加載所有自定義指令 </div>
FreeMarker自定義指令自動加載
package com.sanluan.common.handler;
import static org.apache.commons.logging.LogFactory.getLog;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.logging.Log;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import freemarker.template.SimpleHash;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateModelException;
@Component
public class FreeMarkerExtendHandler implements ApplicationContextAware {
private final Log log = getLog(getClass());
@Autowired
private Map<String, TemplateDirectiveModel> directiveMap;
@Autowired
private FreeMarkerConfigurer freeMarkerConfigurer;
@Override
public void setApplicationContext(ApplicationContext applicationcontext) throws BeansException {
log.info("Freemarker directives and methods Handler started");
Map<String, Object> freemarkerVariables = new HashMap<String, Object>();
StringBuffer directives = new StringBuffer();
for (Entry<String, TemplateDirectiveModel> entry : directiveMap.entrySet()) {
freemarkerVariables.put(entry.getKey(), entry.getValue());
if (0 != directives.length())
directives.append(",");
directives.append(entry.getKey());
}
try {
freeMarkerConfigurer.getConfiguration().setAllSharedVariables(
new SimpleHash(freemarkerVariables, freeMarkerConfigurer.getConfiguration().getObjectWrapper()));
log.info((directiveMap.size()) + " directives created:[" + directives.toString() + "];");
} catch (TemplateModelException e) {
}
}
}
本文由用戶 wdl 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!