关于FreeMarker自定义TemplateDirectiveModel
【转载来源:http://zwllxs.iteye.com/blog/2036826】
java代码如下:
- import freemarker.core.Environment;
- import freemarker.template.ObjectWrapper;
- import freemarker.template.TemplateDirectiveModel;
- /**
- * FreeMarker自定义宏
- * 获取App下载排行列表
- * 参数包括 length(列表长度) mtypeCode(主类型代码) typeCode(小类型代码) rankMode(排行模式1、2、3)
- * @author shannon
- *
- */
- public class FMAppRankDirective implements TemplateDirectiveModel {
- @Resource(name = "appRankService")
- private AppRankService appRankService;
- @SuppressWarnings("unchecked")
- @Override
- public void execute(Environment env, Map params, TemplateModel[] loopVars,
- TemplateDirectiveBody body) throws TemplateException, IOException {
- //DirectiveUtils是借用jeecms项目中的工具类,主要是因为它集成了一些异常处理功能,
- //其实完全可以不用它,params是个Map,自己通过key取值就可以了,做一下空值判断
- Integer length = DirectiveUtils.getInt("length", params);
- Integer mtypeCode = DirectiveUtils.getInt("mtypeCode", params);
- Integer typeCode = DirectiveUtils.getInt("typeCode", params);
- Integer rankMode = DirectiveUtils.getInt("rankMode", params);
- ArrayList<App> rankList = appRankService.getRankList(length, mtypeCode, typeCode, rankMode);
- env.setVariable("appRankList", ObjectWrapper.DEFAULT_WRAPPER.wrap(rankList));
- if (body != null) {
- body.render(env.getOut());
- }
- }
- }
页面引用有多种方法:
一:
- <bean id="fp" class="xxxx.tag.FMAppRankDirective"></bean>
- <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
- 此处省略
- <property name="freemarkerVariables">
- <map>
- <entry key="fp" value-ref="fp"/>
- </map>
- </property>
- </bean>
然后页面直接用 <@fp 的方式调用,
二:在页面上直接导入,如:
<#assign fp= "xxxx.tag.FMAppRankDirective"?new()>
推荐用第一种
关于FreeMarker自定义TemplateDirectiveModel的更多相关文章
- FreeMarker自定义TemplateDirectiveModel
[参考:http://blog.csdn.net/fangzhangsc2006/article/details/8687371] 在采用FreeMarker做前台视图模板的情况下,我们可以通过< ...
- FreeMarker 自定义 TemplateDirectiveModel(二)
FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker 与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP.它不 ...
- FreeMarker 自定义 TemplateDirectiveModel(一)
FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker 与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP.它不 ...
- 基于SSM3框架FreeMarker自定义指令(标签)实现
通过之前的Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解系列文章,我们已经成功的整合到了一起,这次大象将在此基础上对框架中的FreeMarker模板 ...
- freemarker自定义标签(与java合用)
自定义类继承FreemarkerManager类,重写protected Configuration createConfiguration(ServletContext servletContext ...
- OneBlog开源博客-详细介绍如何实现freemarker自定义标签
前言 OneBlog中使用到了springboot + freemarker的技术,同时项目里多个controller中都需要查询一个公有的数据集合,一般做法是直接在每个controller的方法中通 ...
- freemarker 自定义标签
1.编写标签类 package com.pccw.business.fnd.common.filegen; import java.io.IOException; import java.io.Wri ...
- freemarker自定义标签报错(六)
freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Encountered "\"\u4f60\u597d\uff01\& ...
- freemarker自定义标签报错(五)
freemarker自定义标签 1.错误描述 六月 05, 2014 11:40:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严 ...
随机推荐
- 深度学习中 Batch Normalization为什么效果好
看mnist数据集上其他人的CNN模型时了解到了Batch Normalization 这种操作.效果还不错,至少对于训练速度提升了很多. batch normalization的做法是把数据转换为0 ...
- java poi分批次导入Excel
最近换了新工作,公司要求导入Excel要分批次导入,并且是多线程的情况下执行导入,查了很多资料,没看到比较复合的,就打算自己写一个吧,可能有不足,希望指出. 上面说到多线程,这边就不贴出代码了,具体思 ...
- C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 00)
一.安装说明 https://studygolang.com/dl 二.环境变量 // 下载 *.msi 安装文件,部分环境变量默认配置好了. 其他配置如下描述 三.目录及项目层级关系 在系统环境变量 ...
- 极小极大搜索 的个人理解(alpha-beta剪枝)
极小极大搜索的算法过程: 参考文档:http://www.xqbase.com/computer/search_minimax.htm (经典) 主要思想比较简单,但说清楚也不大容易.其核心思想是通过 ...
- C++高级编程1 C++速成
C++高级编程1 C++速成 1.常用的预处理指令 #include [file] #define key value 这个是在C中经常使用的,定义常量数值,用于字符串替换的工作. #ifndef k ...
- expdp/impdp 详细参数解释
任意可以使用expdp/impdp的环境,都可以通过help=y看到帮助文档. 1.expdp参数说明 2.impdp参数说明 3.expdp参数说明(中文) 4.impdp参数说明(中文) expd ...
- Access control allow origin 简单请求和复杂请求
原文地址:http://blog.csdn.net/wangjun5159/article/details/49096445 错误信息: XMLHttpRequest cannot load http ...
- RabbitMQ(4) 未路由的消息、TTL和死信
未路由的消息 当生产这发送的消息到达指定的交换器后,如果交换器无法根据自身类型.绑定的队列以及消息的路由键找到匹配的队列,默认情况下消息将被丢弃.可以通过两种方式 处理这种情况,一是在发送是设置man ...
- CI框架CodeIgniter伪静态各种服务器设置
Apache服务器.htaccess伪静态设置 RewriteEngine on RewriteCond $1 !^(index\\.php|system\\.php|images|skin|js|l ...
- Maven入门-2.Maven一些核心概念介绍
1.Maven仓库2.Maven坐标3.Maven插件和目标4.Maven生命周期4.1 clean:清理项目4.2 default:构建项目(重要)4.3 site:建立项目站点 1.Maven仓库 ...