还说下函数吧。
1. 创建一个方法变量
<#function avg x y>
<#return (x + y) / 2>
</#function>
${avg(10, 20)}
该函数的结构就如上所示,<#function ^^^>,其中函数名字叫avg,参数为x y。函数是带返回值的。很简单,没啥必要废话。
2. 用java实现
import java.util.List;
import freemarker.template.TemplateMethodModel;
import freemarker.template.TemplateModelException;
public class AVGFreemarker implements TemplateMethodModel {
@SuppressWarnings("unchecked")
public Object exec(List list) throws TemplateModelException {
Integer s= Integer.parseInt((String) list.get(0));
Integer t= Integer.parseInt((String) list.get(1));
int m=(s+t)/2;
return m;
}
}
方法写完之后注册呗,同自定义指令相同。
cfg.setSharedVariable("average", new AVGFreemarker());
注册完当然调用即可。
${average(10, 20)}
没啥好说的。