在使用FreeMarker时需要用到以下几个方面:
- FreeMarker在工程中与MVC结合的配置
- 使用FreeMarker的基本语法
- Freemarker静态化的支持
- 如何实现Freemarker自定义标签
- Freemarker宏定义
一、FreeMarker在工程中与MVC结合的配置
二、FreeMarker的基本语法
基本输出:${student.name}
空值判断:${student.name?if_exists} or <#if student.name??>
默认值: ${student.name?default('xxx')}或者${student.name!"xxx"}//每次输出最好带默认值,防止空指针
日期格式:${student.birthday?string('yyyy-MM-dd')}
数字格式:${student.age?string.number} //20
${student.age?string.currency} //20.00
${student.age?string.percent} //20%
传递url的参数:<a href='search.htm?name=${student.name?url}'>查询</a> //对于中文参数,freemarker会自动给我们编码
定义并输出boolean值:<#assign flag=ture /> ${flag?string("yes","no")} //yes
逻辑判断
a:if else 形式
<#if condition>...<#elseif condition2>...<#else>...</#if>
b:switch 形式
<#switch value>
<#case refValue1>...<#break>
<#case refValue2>...<#break>
<#default>...
</#switch>
循环
a.遍历普通list:
<#list someList as item>...</#list>
b.遍历list的前面几项:
<#assign x=3><#list 1..x as i>${i}</#list>
c.遍历map:
<#list nameMap.keySet() as name>${name}-${nameMap.get(name)}</#list>
或者
<#list nameMap?keys as name>${name}-${nameMap.get(name)}</#list>
或者
<#list nameMap?keys as key>${key}-${afterCheckMap[key]}</#list>
list排序输出
a.按照属性name进行排序(默认升序):
<#list someList?sort_by(["name"]) as item>${item.name}</#list>
b.按照属性name进行降序排序:
<#list somelist?sort_by(["name"])?reverse as item>${item.name}</#list>
注意:
- list指令还隐含了两个循环变量:item_index:当前迭代项在所有迭代项中的位置,是数字值。
- item_has_next:用于判断当前迭代项是否是所有迭代项中的最后一项。
- 关于map的key,它必须是String,这个在一定程度上限制了后台程序对于map的表达。
比较符
大于:gt
小于:lt
大于等于:gte
小于等于:lte
使用方法很简单
<#if x gt 1>...</#if>
其他参考资料如下:
内置函数 数字、字符串、日期格式化用法介绍:http://blog.csdn.net/lufeng20/article/details/7790156
三、Freemarker静态化的支持
四、如何实现Freemarker自定义标签
五、Freemarker宏定义
宏定义能够减少重复代码的编写,也可以封装几个不同的脚本(例如分页模块),供页面开发人员使用。同时也利于样式的扩展。
简单实例
定义一个简单的分页样式宏:<#macro pager><div class="pager-style">这是个分页样式</div></#macro>
调用宏:<@pager/>
在macro指令中可以在宏变量之后定义参数
<#macro pager pageIndex>
<div class="pager-style">这是第${pageIndex}页</div>
</#macro>
调用宏:<@pager pageIndex="1"/>
注意此种情况:<@pager pageIndex=pagination/>
此时的pagination变量的值传给pageIndex参数,该值不仅是字符串,还可以是其它类型,甚至是复杂的表达式。
定义多参数的宏
<#macro pager pageIndex totalSize>
<div class="pager-style">这是第${pageIndex}页,总共${totalSize}条记录</div>
</#macro>
调用时参数的次序是无关的:<@pager pageIndex="1" totalSize="20"/>
在定义宏参数时可以指定缺省值,若未指定则必须保证对所有参数进行赋值,否则会出现空指针异常:
<#macro pager pageIndex totalSize pageSize="10">
<div class="pager-style">这是第${pageIndex}页,总共${totalSize}条记录,每页${pageSize}条</div>
</#macro>
注意:宏的参数是局部变量,只能在宏定义中有效。
在宏里嵌套内容
<#nested>//该指令会获取宏调用指令开始和结束标记之间的模板片断
<#macro pager><div class="pager-style">这是个分页样式</div></#macro>
执行宏调用:<@pager>我爱分页</@pager>
执行结果:我爱分页<div class="pager-style">这是个分页样式</div>
相关推荐
Freemarker 常用内置函数 Freemarker 是一个基于 Java 的模板引擎,它提供了一些非常有用的内置函数,可以帮助我们快速开发和生成动态内容。在本文中,我们将详细介绍 Freemarker 的一些常用内置函数。 Sequence ...
本压缩包集合了丰富的Freemarker学习资源,涵盖从基础到进阶的各种知识点,以下是这些文档中可能包含的详细内容: 1. **Freemarker中文手册.pdf**: 这份手册通常会详细介绍Freemarker的基本概念,如模板语言、...
这个压缩包集合了多种关于Freemarker的资源,包括文档、手册和笔记,对于学习和理解Freemarker来说非常有价值。 首先,我们来看《Freemarker开发指南》。这是一份详尽的教程,涵盖了Freemarker的基本概念、安装、...
本项目是一款基于Freemarker模板引擎和Spring-Task任务调度的社区书评网站设计源码。包含494个文件,涵盖了66个Java类文件、54个JavaScript脚本文件...后台通过Spring-Task自动汇总用户评分,动态计算图书的平均评分。
本资源“freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总.rar”显然是一个集合了多种功能的压缩包,旨在帮助开发者高效地使用Freemarker来处理复杂的Word文档生成任务,并且包含了将Word...
本资料包“freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总rengm.zip”提供了关于如何使用Freemarker处理动态图片并转换Word为PDF的详细工具和教程。 首先,我们关注“doc_docx”部分。...
Freemarker是Java平台上的一个开源模板引擎,用于生成动态内容。它与JSP类似,但更专注于视图层,提供更简洁的模板语法,且不包含Java代码,这使得模板更加易读,有利于前后端分离。在动态页面静态化中,Freemarker...
JSTL(JavaServer Pages Standard Tag Library)即JavaServer页面的标准标签库,它是一套用于JSP页面的自定义标签库,通过这些标签可以简化JSP页面的开发。本文将对JSTL中常用的标签进行总结。 ...
JAVA SSH整合需要用到的jar包汇总,包含: antlr-2.7.7.jar asm-3.3.jar asm-commons-3.3.jar asm-tree-3.3.jar c3p0-0.9.2.1.jar com.springsource.org.aopalliance-1.0.0.jar ...commons-fileupload-1.3.1.jar ...
这个资料整理汇总包含了Struts2技术的方方面面,是学习和理解Struts2框架的宝贵资源。 首先,让我们深入了解一下Struts2的核心概念。Struts2是基于Model-View-Controller(MVC)设计模式的,它将业务逻辑、数据和...
freemarker-2.3.13.jar iText-2.1.0.jar jasperreports-3.5.0.jar jdt-compiler-3.1.1.jar json-lib-2.2.3-jdk15.jar jsonplugin-0.34.jar jstl.jar log4j-1.2.11.jar mysql-connector-java-5.0.8-bin.jar ognl-...
在这个"struts2需要的jar包汇总"中,我们看到的是一系列核心库和依赖库,它们构成了Struts2框架的基础。下面将逐一解释这些jar包的功能和作用。 1. **freemarker-2.3.19.jar**:FreeMarker是一个模板引擎,用于生成...
在本压缩包"struts2 开发jar包汇总"中,包含了Struts2开发所需要的核心库和其他相关依赖,使得开发者可以轻松地进行Struts2应用的开发。 首先,我们要理解Struts2框架的运行机制。它主要由以下几个部分组成: 1. *...
7. Freemarker:`freemarker-2.3.19.jar`是Freemarker模板引擎,常用于生成HTML或其他文本格式的动态内容,与Struts2等框架配合使用,可以实现视图层的渲染。 8. 其他库:还有一些其他支持库,如`spring.jar`可能...
此外,Struts2支持多种结果类型和模板技术,如FreeMarker、JSP等,增强了视图层的灵活性。 接下来,Hibernate是一个对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。...
- **View**:视图层,通常使用JSP、FreeMarker或Thymeleaf等模板引擎来渲染结果。 - **Controller**:控制器,处理来自客户端的请求,调用业务逻辑,更新模型,并返回一个视图名称。 2. **配置与初始化** - **...
开发环境:Springboot+MybatisPlus+SpringMvc+Freemarker+Maven 1、 基础资料 往来单位资料 货品资料 员工信息 仓库资料 计量单位 账户信息 公司信息 用户可以快速、直观地 查询所需要的数据资料。 2、 系统管理 操作...
本教程技巧打包汇总涵盖了多个重要领域,旨在帮助开发者提升Java技术能力,掌握关键的开发工具和框架。以下是对这些主题的详细阐述: 1. Hibernate:这是一个强大的对象关系映射(ORM)框架,它允许开发者使用Java...
- **Freemarker和Velocity**:除了JSP外,Struts 2还支持使用Freemarker和Velocity作为视图技术。 4. 安全问题与最佳实践: - **漏洞历史**:Struts 2曾曝出过严重安全漏洞,如CVE-2017-9805,需要及时更新到最新...
本教程汇总了多个资源,旨在帮助学习者全面理解和掌握Struts2的核心概念和技术。 "struts2.0中文教程.chm"可能是一个中文版的Struts2.0教程,涵盖了框架的基础知识和进阶特性。在该教程中,你可以期待学习到如何...