自定义函数分为以下几步:
1、继承 TemplateMethodModelEx类
- package com.xuzengqiang.freemarker.framework;
- import java.util.List;
- import org.omg.CORBA.INTF_REPOS;
- import freemarker.template.SimpleNumber;
- import freemarker.template.SimpleScalar;
- import freemarker.template.TemplateMethodModelEx;
- import freemarker.template.TemplateModel;
- import freemarker.template.TemplateModelException;
- @SuppressWarnings("all")
- public class RepeatMethod implements TemplateMethodModelEx
- {
- @Override
- public TemplateModel exec(List list) throws TemplateModelException
- {
- String str=list.get(0).toString();
- int num=Integer.valueOf(list.get(1).toString());
- StringBuffer result=new StringBuffer();
- for(int i=0;i<num;i++)
- {
- result.append(str);
- }
- return new SimpleScalar(result.toString());
- }
- }
2、暴露节点
修改配置文件
<!-- 配置freeMarker的模板路径 -->
<bean id="freemarkerConfig" class="com.egova.web.freemarker.PluginFreeMarkerConfigurer">
<property name="freemarkerSettings" ref="freemarkerConfiguration" />
<property name="templateLoaderPath" value="classpath*:template" />
<property name="freemarkerVariables">
<map>
<entry key="repeat" value-ref="repreatMethod" />
</map>
</property>
</bean>
<bean id="repreatMethod" class="com.egova.web.freemarker.RepeatMethod" />
3、使用
- <#assign str="love">
- ${repeat(str,3)}
在控制台打印的就是:
1. lovelovelove