笔者学习慕课网freemarker自定义函数课程的笔记
在Java中编写,用ModelAndView添加到flt文件中使用
排序函数实现类SortMethod
此类实现TemplateMethodModelEx接口,写sort_int中的排序逻辑
public class SortMethod implements TemplateMethodModelEx{
@Override
public Object exec(List arguments) throws TemplateModelExcetion{
//获得第一个参数
//所有参数都要先转成SimpleSequence
SimpleSequence arg0 = (SimpleSequence)arguments.get(0);
//把参数转换为list
List<BigDecimal> list = arg0.toList();
//排序
Collection.sort(list,
new Comparator<BigDecimal>() {
@Override
public int compare(BigDecimal o1,BigDecimal o2) {
return o1.intValue() - o2.intValue(); //升序
}
}
);
return list; //函数返回值
}
}
controller类
将类SortMethod添加到ModelAndView作为函数,供flt文件中使用
@Controller
@RequestMapping("/")
public class Cp1Controller{
@RequestMapping("/cp1")
public ModelAndView index() {
//创建路径
ModelAndView mv = new ModelAndView("cp1");
//把函数处理类传入视图
mv.addObject("sort_int",new SortMethod() );
return mv;
}
}
在.flt文件使用
直接当函数使用
<#assign myList=[2,3,1,5,4]/>
<#list sort_int(myList) as item>
${item},
</#list>
<li>
<#assign myList=[2,3,1,5,4] />
<#-- sort为函数,reverse为倒序-->
<#list myList?sort?reverse as item>
<#-- item_index为下标 -->
${item_index}:${item}<br/>
</#list>
${myList?size}<br/>
${myList[3]}<br/>
</li>