Freemarker 自定义标签 实现TemplateDirectiveModel
1 自定义标签需要实现TemplateDirectiveModel这个接口中的execute方法 实例代码如下
public class UserListDirective implements TemplateDirectiveModel{ @Autowired
private UserDAO userDao;
@Override
public void execute(Environment env, Map params, TemplateModel[] loopVars,
TemplateDirectiveBody body)
throws TemplateException, IOException {
String name = params.get("name").toString();
List<User> userlist = userDao.findByProperty("name", name); env.setVariable("userList", getBeansWrapper().wrap(userlist));
body.render(env.getOut());
} public static BeansWrapper getBeansWrapper(){
BeansWrapper beansWrapper =
new BeansWrapperBuilder(Configuration.VERSION_2_3_21).build();
return beansWrapper;
}
}
2 配置 UserListDirective 到spring bean xml中
<bean id="userListDirective" class="com.action.directive.UserListDirective"></bean>
3 将spring bean 设置到freemarkerConfig全局变量中去。
<bean id="freemarkerConfig2"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/" />
<property name="freemarkerVariables">
<map >
<entry key="userListDirective" value="userListTag" />
</map>
</property>
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="defaultEncoding">UTF-8</prop>
<prop key="url_escaping_charset">UTF-8</prop>
<prop key="locale">zh_CN</prop>
<prop key="boolean_format">true,false</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="time_format">HH:mm:ss</prop>
<prop key="number_format">0.######</prop>
<prop key="whitespace_stripping">true</prop>
</props>
</property>
</bean>
4 ftl文件中的访问方式
<@userListTag name="zhangsan">
<#if userList?? && userList?size gt 0>
<#list userList as user>
<a href="">${user.name}</a>
</#list>
</#if>
</@userListTag>
Freemarker 自定义标签 实现TemplateDirectiveModel的更多相关文章
- spring整合freemarker 自定义标签
1.自定义标签实现 TemplateDirectiveModel 接口 2.spring 配置,注意标红的两行 <bean id="freemarkerConfig" cla ...
- freemarker自定义标签(与java合用)
自定义类继承FreemarkerManager类,重写protected Configuration createConfiguration(ServletContext servletContext ...
- OneBlog开源博客-详细介绍如何实现freemarker自定义标签
前言 OneBlog中使用到了springboot + freemarker的技术,同时项目里多个controller中都需要查询一个公有的数据集合,一般做法是直接在每个controller的方法中通 ...
- freemarker自定义标签报错(六)
freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Encountered "\"\u4f60\u597d\uff01\& ...
- freemarker自定义标签报错(五)
freemarker自定义标签 1.错误描述 六月 05, 2014 11:40:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严 ...
- freemarker自定义标签报错(四)
freemarker自定义标签 1.错误描述 六月 05, 2014 11:31:35 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严 ...
- freemarker自定义标签(一)
freemarker自定义标签 1.自定义标签说明 宏变量存储模板片段可以被用作自定义指令macro 2.示例说明 <html> <head> <meta http-eq ...
- freemarker自定义标签报错(三)
freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Encountered " " at line 14, column ...
- freemarker自定义标签报错(二)
freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Unexpected end of file reached. at freemarker ...
随机推荐
- 网络:W5500用浏览器配置设备
1.背景 嵌入式端使用网络通信后,可以在PC端进行设备配置.方法有二:1)上位机配置:2)浏览器配置. 上位机配置可以把设置和测量作为一体,功能可以很强大,体验较好. 浏览器配置就是在电路板上搭载一个 ...
- HTML5/CSS3鼠标悬停动画菜单按钮
在线演示 本地下载
- Hadoop:eclipse配置hadoop-eclipse-plugin(版本hadoop2.7.3)
配置hadoop-eclipse-plugin(版本hadoop2.7.3): 1:首先下载我们需要的 hadoop-eclipse-plugin-2.7.3.jar,winutils.exe 和 ...
- javascript设计模式 - 解释器模式(interpreter)
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Metasploit – 内网连接
0x00 问题描述 在渗透测试时,metasploit往往作为后渗透工具,(因为远程溢出越来越少).我一般都是在获得一个webshell后,来使用metasploit进行信息采集,或者内网扫描等操作. ...
- Oracle 配置tnsnames.ora
之所以要配置这个文件,是因为里面有配置数据库 服务器的地址. 目录: E:\app\PC-Gang\product\11.2.0\dbhome_1\NETWORK\ADMIN
- 在OpenStack里怎样配置Neutron,让虚拟机访问外网
http://blog.csdn.net/zhangli_perdue/article/details/50264681 OpenStack里虚机(或者叫instance)只有在分配floating ...
- 新东方雅思词汇---7.3、dioxide
新东方雅思词汇---7.3.dioxide 一.总结 一句话总结: di(双)+oxide 英 [daɪ'ɒksaɪd] 美 [daɪ'ɑksaɪd] n. 二氧化物 词组短语 carbon di ...
- HTML5 地理定位 【来自百度应用分享平台】
百度给的地图API接口相当完善,复制过来一下,以后备用 基本使用方法: <!--引入百度地图API--> <scriptsrc="http://api.map.baidu. ...
- spring3: 基于Schema的AOP
6.3 基于Schema的AOP 基于Schema的AOP从Spring2.0之后通过“aop”命名空间来定义切面.切入点及声明通知. 在Spring配置文件中,所以AOP相关定义必须放在<a ...