`

freemaker教程

    博客分类:
  • java
阅读更多

新换了工作,与想象差距也太大了

最近沦落到做报表了,我就崩溃

看不惯别人不断的拼字符串,还写了个架子帮助拼接字符串,就用了freemaker

不废话了

1.freemarker在struts2里面的整合

<actionname="Action1"  class="com.abc.Action1">
    <result type="freemarker">/fm.ftl</result>
</action>

这里没有涉及到struts2的标签的使用,如果需要使用struts2的标签可能需要额外的配置,本人对使用标签持反对意见.

2.基本的输出
基本输出: ${student.name}        (student的定义在本文末尾)
 
空值判断:${student.name?if_exists}
 
默认值:  ${student.name?default(‘xxx’)}或者${ book.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的参数: <href='search.htm?name=${student.name?url}'>查询</a>  对于中文参数,freemarker会自动给我们编码
 
boolean值:<#assign flag=ture />
          ${flag?string("yes","no")} <#-- yes -->
 
每次输出的时候最好是带个默认值,否则没有被赋值的变量就会抛出异常,那个黄黄的freemarker出错页面,真是让人看了太难过了

 

3 逻辑判断

a:if else 形式

<#if condition>
.
<#elseif condition2>

<#elseif condition3>
.
<#else>

<#if


b:switch 形式

<#switch value>
<#case refValue1>
     
     <#break>
<#case refValue2>
     
     <#break>

<#case refValueN>
     
     <#break>
<#default>
     
</#switch>

 

4 循环
遍历普通list:
<#list someList as item>
 
</#list>
 
 
遍历list的前面几项:
<#assign x=3>
<#list 1..x as i>
  ${i}
</#list>
 
 
遍历map:
<#list nameMap.keySet() as name>
   ${nameMap.get(name)}
</#list>
  或者
<#list nameMap?keys as name>     
   ${nameMap.get(name)}                                     
</#list>
 
 
list排序输出:
<#list someList?sort_by(["name"]) as item>
     ${item.name}
</#list>
 按照属性name进行排序(默认升序)
 
<#list somelist?sort_by(["name"])?reverse as item>
     ${item.name}
</#list>
 按照属性name进行降序排序
 
 
 
list指令还隐含了两个循环变量:item_index:当前迭代项在所有迭代项中的位置,是数字值。
item_has_next:用于判断当前迭代项是否是所有迭代项中的最后一项。
 
map 关于map的key,它必须是String,这个在一定程度上限制了后台程序对于map的表达。

 

5 其他指令

 

freemarker  大于  小于 大于等于  小于等于比较符
 
大于 gt
小于 lt
大于等于 gte
小于等于 lte
 
使用方法很简单
<#if x gt 1>
..
</#if>
 
 
struts2环境中freemarker读取后台程序的静态变量和静态方法
 
${stack.findValue("@package.ClassName@method")}
${stack.findValue("@package.ClassName@property")}



6 宏

 

1 基本用法
宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量,下面是一个例子:
<#macro greet>
  <font size="+2">Hello Joe!</font>
</#macro>
调用宏时,与使用freemarker的其他指令类似,只是使用@替代FTL标记中的#:
<@greet/>
 
 
2 在macro指令中可以在宏变量之后定义参数,如:
<#macro greet person>
  <font size="+2">Hello ${person}!</font>
</#macro>
可以这样使用这个宏变量: <@greet person="Fred"/>
但是下面的代码具有不同的意思: <@greet person=Fred/>
 
这意味着将Fred变量的值传给person参数,该值不仅是字符串,还可以是其它类型,甚至是复杂的表达式。
 
 
宏可以有多参数,下面是一个例子:
<#macro greet person color>
  <font size="+2" color="${color}">Hello ${person}!</font>
</#macro>
可以这样使用该宏变量,其中参数的次序是无关的:<@greet person="Fred" color="black"/>
 
 
 
可以在定义参数时指定缺省值,否则,在调用宏的时候,必须对所有参数赋值:
 <#macro greet person color="black">
    <font size="+2" color="${color}">Hello ${person}!</font>
 </#macro>
注意:宏的参数是局部变量,只能在宏定义中有效。
 
 
3 在宏里嵌套内容
<#nested>指令会执行宏调用指令开始和结束标记之间的模板片断,举一个简单的例子:
<#macro border>
 <table>
   <tr><td>
      <#nested>
   </tr></td>
 </table>
</#macro>
执行宏调用:<@border>The bordered text</@border >

 

转http://www.blogjava.net/nod0620/articles/325561.html

分享到:
评论
1 楼 Locker.Xai 2016-10-11  
参考了 

相关推荐

    Freemarker教程(中文版)

    在“Freemarker教程+中文版.pdf”这份文档中,你将会详细了解到如何配置和初始化Freemarker,如何创建和解析模板,以及如何处理模板错误。教程还会深入讲解Freemarker的高级特性,如宏、指令、模板继承和布局等,...

    FreeMarker教程pdf版

    ### FreeMarker教程精要 **FreeMarker** 是一种强大的模板引擎,主要用于生成动态网页或用于任何文本输出场景。本文档将深入探讨FreeMarker的核心组成部分及其使用方法,包括文本、注释、插值以及FTL(FreeMarker ...

    freemarker\Freemarker教程_中文版

    Freemarker是一款强大的模板引擎,用于将数据模型与表示层分离,从而实现在Web开发中的动态页面生成。根据所提供的文件信息,我们可以详细探讨以下几个关键的知识点: ### 1. 创建配置实例 在Freemarker中,`...

    Freemarker教程及jar包

    `Freemarker教程 中文版.pdf`是一份详细的中文教程,将指导你掌握以下关键知识点: 1. **模板设计模式**:了解如何定义模板的结构,包括基本的文本、注释、变量和表达式。 2. **控制结构**:学习如何使用条件语句...

    Freemarker教程_中文版

    ### Freemarker教程中文版知识点详解 #### 一、FreeMarker简介与快速入门 **知识点1:FreeMarker概述** Freemarker是一款用Java编写的模板引擎,它的主要功能是从模板(text-based templates)生成文本输出。这...

    FreeMarker教程中文版

    这个“FreeMarker教程中文版”提供了全面的学习资源,帮助开发者深入理解和应用FreeMarker。 FreeMarker的核心概念是模板和数据模型。模板是HTML或其他文本文件,其中包含一些特定的FreeMarker指令,用于动态插入由...

    Freemarker 教程

    3. **教程手册**:《Freemarker教程手册中文版》是学习Freemarker的重要参考资料,涵盖了从入门到进阶的全面内容。 通过这个教程,你可以系统地了解和掌握Freemarker的使用方法,提升你的Web开发技能。在实践中不断...

    FreeMarker教程

    ### FreeMarker教程知识点详解 #### 一、FreeMarker概述 **FreeMarker** 是一款非常流行的模板引擎,主要用于根据模板和数据模型生成文本输出。它的主要应用场景包括但不限于动态生成HTML页面,使得前端设计师能够...

    Freemarker教程 中文版

    ### Freemarker教程中文版知识点详解 #### 一、FreeMarker简介 - **定位与功能**:FreeMarker是一款基于模板的文本生成工具,主要用于生成各类文本输出,如HTML、XML、RTF、Java源代码等。它由纯Java编写,因此可以...

    Freemarker教程_中文版.pdf

    ### FreeMarker教程知识点 #### 一、快速入门 - **创建配置实例** 在使用FreeMarker时,首先需要创建一个Configuration实例,这是存放FreeMarker配置信息的重要对象。在应用系统生命周期中(如servlet),只需...

    Freemarker教程+中文版

    总之,FreeMarker教程+中文版是一个全面的学习资源,涵盖了从基础到高级的所有主题,适合初学者和经验丰富的开发者。通过学习,你可以掌握如何有效地使用FreeMarker构建动态、高效的Web应用界面。

    Java生成word文档Freemarker教程

    Java生成word文档Freemarker教程 详细说明文档,帮组文档

    Java模板引擎Freemarker教程.docx

    ### Java模板引擎Freemarker教程知识点详解 #### 一、FreeMarker概述 FreeMarker是一个用于生成输出文本的模板引擎,其应用广泛,特别是在Java应用程序中作为视图层的一部分。它支持多种类型的输出文本,包括HTML、...

    freemarker教程

    ### Freemarker教程详解 #### FreeMarker概述 FreeMarker是一个基于模板的文本生成工具,主要功能是根据提供的数据和模板来生成各类文本输出,比如HTML网页、XML文档等。该工具完全采用Java语言编写,适用于各种...

    freemarker操作手册-完整freemarker教程

    本教程将深入讲解Freemarker的核心概念、语法和实际应用,帮助你全面掌握这个模板语言。 1. **Freemarker简介** - Freemarker是一个开源的、轻量级的模板引擎,其核心功能是将数据模型与HTML模板结合,生成最终的...

    freemarker 教程

    综上所述,Freemarker教程中文版PDF将涵盖以上知识点,并可能包括更多实践案例和深入解析,帮助读者全面理解和掌握Freemarker的使用。通过学习,开发者能够熟练地利用Freemarker构建高效的模板系统,提高Web应用的...

    Freemarker教程

    在Freemarker教程中,你将深入了解到以下几个核心概念和知识点: 1. **模板语言**:Freemarker使用简单的文本模板语言,其语法由“控制结构”(例如条件语句和循环)和“数据引用”(用于显示数据模型中的值)组成...

Global site tag (gtag.js) - Google Analytics