`
tom_seed
  • 浏览: 321742 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

FreeMarker汇总

阅读更多

在使用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 常用内置函数 Freemarker 是一个基于 Java 的模板引擎,它提供了一些非常有用的内置函数,可以帮助我们快速开发和生成动态内容。在本文中,我们将详细介绍 Freemarker 的一些常用内置函数。 Sequence ...

    freemarker学习资料汇总

    本压缩包集合了丰富的Freemarker学习资源,涵盖从基础到进阶的各种知识点,以下是这些文档中可能包含的详细内容: 1. **Freemarker中文手册.pdf**: 这份手册通常会详细介绍Freemarker的基本概念,如模板语言、...

    freemarker资料汇总

    这个压缩包集合了多种关于Freemarker的资源,包括文档、手册和笔记,对于学习和理解Freemarker来说非常有价值。 首先,我们来看《Freemarker开发指南》。这是一份详尽的教程,涵盖了Freemarker的基本概念、安装、...

    基于Freemarker和Spring-Task的社区书评网站设计源码

    本项目是一款基于Freemarker模板引擎和Spring-Task任务调度的社区书评网站设计源码。包含494个文件,涵盖了66个Java类文件、54个JavaScript脚本文件...后台通过Spring-Task自动汇总用户评分,动态计算图书的平均评分。

    freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总.rar

    本资源“freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总.rar”显然是一个集合了多种功能的压缩包,旨在帮助开发者高效地使用Freemarker来处理复杂的Word文档生成任务,并且包含了将Word...

    freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总rengm.zip

    本资料包“freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总rengm.zip”提供了关于如何使用Freemarker处理动态图片并转换Word为PDF的详细工具和教程。 首先,我们关注“doc_docx”部分。...

    动态页面静态化汇总--页面静态化方案

    Freemarker是Java平台上的一个开源模板引擎,用于生成动态内容。它与JSP类似,但更专注于视图层,提供更简洁的模板语法,且不包含Java代码,这使得模板更加易读,有利于前后端分离。在动态页面静态化中,Freemarker...

    JSTL常用标签总结

    JSTL(JavaServer Pages Standard Tag Library)即JavaServer页面的标准标签库,它是一套用于JSP页面的自定义标签库,通过这些标签可以简化JSP页面的开发。本文将对JSTL中常用的标签进行总结。 ...

    JAVA SSH整合需要用到的jar包汇总

    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的核心概念。Struts2是基于Model-View-Controller(MVC)设计模式的,它将业务逻辑、数据和...

    写java程序用到的一些jar包汇总

    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包汇总"中,我们看到的是一系列核心库和依赖库,它们构成了Struts2框架的基础。下面将逐一解释这些jar包的功能和作用。 1. **freemarker-2.3.19.jar**:FreeMarker是一个模板引擎,用于生成...

    struts2 开发jar包汇总

    在本压缩包"struts2 开发jar包汇总"中,包含了Struts2开发所需要的核心库和其他相关依赖,使得开发者可以轻松地进行Struts2应用的开发。 首先,我们要理解Struts2框架的运行机制。它主要由以下几个部分组成: 1. *...

    struts2,spring,mybatis汇总jar包下载

    7. Freemarker:`freemarker-2.3.19.jar`是Freemarker模板引擎,常用于生成HTML或其他文本格式的动态内容,与Struts2等框架配合使用,可以实现视图层的渲染。 8. 其他库:还有一些其他支持库,如`spring.jar`可能...

    最全SSH笔记汇总

    此外,Struts2支持多种结果类型和模板技术,如FreeMarker、JSP等,增强了视图层的灵活性。 接下来,Hibernate是一个对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。...

    【SpringMVC】知识汇总

    - **View**:视图层,通常使用JSP、FreeMarker或Thymeleaf等模板引擎来渲染结果。 - **Controller**:控制器,处理来自客户端的请求,调用业务逻辑,更新模型,并返回一个视图名称。 2. **配置与初始化** - **...

    springboot进销存管理系统源码

    开发环境:Springboot+MybatisPlus+SpringMvc+Freemarker+Maven 1、 基础资料 往来单位资料 货品资料 员工信息 仓库资料 计量单位 账户信息 公司信息 用户可以快速、直观地 查询所需要的数据资料。 2、 系统管理 操作...

    一些JAVA教程技巧打包汇总

    本教程技巧打包汇总涵盖了多个重要领域,旨在帮助开发者提升Java技术能力,掌握关键的开发工具和框架。以下是对这些主题的详细阐述: 1. Hibernate:这是一个强大的对象关系映射(ORM)框架,它允许开发者使用Java...

    struts各个版本jar包汇总

    - **Freemarker和Velocity**:除了JSP外,Struts 2还支持使用Freemarker和Velocity作为视图技术。 4. 安全问题与最佳实践: - **漏洞历史**:Struts 2曾曝出过严重安全漏洞,如CVE-2017-9805,需要及时更新到最新...

    Struts2教程汇总

    本教程汇总了多个资源,旨在帮助学习者全面理解和掌握Struts2的核心概念和技术。 "struts2.0中文教程.chm"可能是一个中文版的Struts2.0教程,涵盖了框架的基础知识和进阶特性。在该教程中,你可以期待学习到如何...

Global site tag (gtag.js) - Google Analytics