【转载来源:http://zwllxs.iteye.com/blog/2036826】

java代码如下:

  1. import freemarker.core.Environment;
  2. import freemarker.template.ObjectWrapper;
  3. import freemarker.template.TemplateDirectiveModel;
  4. /**
  5. * FreeMarker自定义宏
  6. * 获取App下载排行列表
  7. * 参数包括 length(列表长度) mtypeCode(主类型代码) typeCode(小类型代码) rankMode(排行模式1、2、3)
  8. * @author shannon
  9. *
  10. */
  11. public class FMAppRankDirective implements TemplateDirectiveModel {
  12. @Resource(name = "appRankService")
  13. private AppRankService appRankService;
  14. @SuppressWarnings("unchecked")
  15. @Override
  16. public void execute(Environment env, Map params, TemplateModel[] loopVars,
  17. TemplateDirectiveBody body) throws TemplateException, IOException {
  18. //DirectiveUtils是借用jeecms项目中的工具类,主要是因为它集成了一些异常处理功能,
  19. //其实完全可以不用它,params是个Map,自己通过key取值就可以了,做一下空值判断
  20. Integer length = DirectiveUtils.getInt("length", params);
  21. Integer mtypeCode = DirectiveUtils.getInt("mtypeCode", params);
  22. Integer typeCode = DirectiveUtils.getInt("typeCode", params);
  23. Integer rankMode = DirectiveUtils.getInt("rankMode", params);
  24. ArrayList<App> rankList = appRankService.getRankList(length, mtypeCode, typeCode, rankMode);
  25. env.setVariable("appRankList", ObjectWrapper.DEFAULT_WRAPPER.wrap(rankList));
  26. if (body != null) {
  27. body.render(env.getOut());
  28. }
  29. }
  30. }

页面引用有多种方法: 
一:

  1. <bean id="fp" class="xxxx.tag.FMAppRankDirective"></bean>
  2. <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  3. 此处省略
  4. <property name="freemarkerVariables">
  5. <map>
  6. <entry key="fp" value-ref="fp"/>
  7. </map>
  8. </property>
  9. </bean>

然后页面直接用 <@fp 的方式调用,

二:在页面上直接导入,如: 
<#assign fp= "xxxx.tag.FMAppRankDirective"?new()>

推荐用第一种

关于FreeMarker自定义TemplateDirectiveModel的更多相关文章

  1. FreeMarker自定义TemplateDirectiveModel

    [参考:http://blog.csdn.net/fangzhangsc2006/article/details/8687371] 在采用FreeMarker做前台视图模板的情况下,我们可以通过< ...

  2. FreeMarker 自定义 TemplateDirectiveModel(二)

    FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker 与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP.它不 ...

  3. FreeMarker 自定义 TemplateDirectiveModel(一)

    FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker 与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP.它不 ...

  4. 基于SSM3框架FreeMarker自定义指令(标签)实现

    通过之前的Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解系列文章,我们已经成功的整合到了一起,这次大象将在此基础上对框架中的FreeMarker模板 ...

  5. freemarker自定义标签(与java合用)

    自定义类继承FreemarkerManager类,重写protected Configuration createConfiguration(ServletContext servletContext ...

  6. OneBlog开源博客-详细介绍如何实现freemarker自定义标签

    前言 OneBlog中使用到了springboot + freemarker的技术,同时项目里多个controller中都需要查询一个公有的数据集合,一般做法是直接在每个controller的方法中通 ...

  7. freemarker 自定义标签

    1.编写标签类 package com.pccw.business.fnd.common.filegen; import java.io.IOException; import java.io.Wri ...

  8. freemarker自定义标签报错(六)

    freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Encountered "\"\u4f60\u597d\uff01\& ...

  9. freemarker自定义标签报错(五)

    freemarker自定义标签 1.错误描述 六月 05, 2014 11:40:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严 ...

随机推荐

  1. JAXB和XStream比较

    转自:https://www.cnblogs.com/tang9139/p/4825610.html http://www.cnblogs.com/wlsblog/p/7452882.html 这两东 ...

  2. IE 中的 button type默认值问题

    今天遇到一个问题. 将项目页面的渲染模式从 IE7 改为 IE10 后(<meta http-equiv="X-UA-Compatible" content="IE ...

  3. 使用ssm整合是项目启动tomcat报错java.lang.IndexOutOfBoundsException

    解决办法:删除.m2文件夹下的全部仓库,然后重启myeclipse,对项目进行maven project.问题解决. 在没有这样做时,除了tomcat启动会失败,项目还有会报如下错误: ①cvc-co ...

  4. form组件的验证

    django 的form组件可以实现自定义的验证规则. 创建基于Form的类,在类中创建字段,定义规则. 创建该类的对象,并将待验证的数据传入,使用is_valid()函数. is_valid()函数 ...

  5. 简述<T> 与 <?>

    引 jdk1.5以后引入了泛型的概念,即:<>,规定了集合中元素类型 比如下面代码: List list1 = new ArrayList(); List<String> li ...

  6. ctci4.1

     ;      )         ;     )         return false;     else         return true; }

  7. ResultSet 结果集

    转自:http://blog.csdn.net/z93971401/article/details/7469503 这篇文章并没有给出如何使用ResultSet的具体例子,只是从ResultSet的功 ...

  8. logback配置日志输出

    <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> & ...

  9. Highcharts 时间序列,可缩放的图表;Highcharts X 轴翻转曲线图;Highcharts 带标记曲线图

    Highcharts 时间序列,可缩放的图表 配置 图表 配置可缩放图表. chart.zoomType 指定了用户可以拖放的尺寸,用户可以通过拖动鼠标来放大,可能值是x,y或xy: var char ...

  10. Matching (2)

    HALCON 10.0  II-B 3.1 Gray-Value-Based Matching 基于灰度的匹配是一个非常经典的方法,它仅适用于对象的不模糊,不缺失,灰度值不变化.适用于对象旋转转.注意 ...