`
aaagu1234
  • 浏览: 148811 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

freemarker 基本实践

阅读更多
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的参数: <a 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 >
分享到:
评论

相关推荐

    FreeMarker模板基本语法

    ### FreeMarker模板基本语法 #### 一、FreeMarker概述与基本用法 **FreeMarker**是一种强大的、基于...上述介绍仅涵盖了FreeMarker模板引擎的一部分基础内容,更多的高级特性还需要开发者在实践中不断探索和学习。

    freemarker入门文档及例子

    一、Freemarker基本概念 1. 模板:Freemarker模板是纯文本文件,其中包含静态文本和控制结构,如条件语句和循环。它们用来生成最终输出。 2. 数据模型:这是Java对象集合,由应用程序提供给Freemarker,模板中的变量...

    freemarker

    Freemarker是一个强大的模板引擎,常用于Java Web开发中,生成动态HTML或其他格式的文本输出。它是基于模板的,允许开发者将逻辑与...通过不断的实践和学习,你将能够利用Freemarker的强大功能构建出高效的Web应用。

    freemarker-2.3.22

    9. **最佳实践**:合理组织模板文件结构、避免模板过于复杂、正确处理null值等都是使用Freemarker时需要注意的最佳实践。 通过这个压缩包提供的资源,开发者可以全面地学习和使用Freemarker,无论是初学者还是经验...

    freemarker 源码、中文API、 freemarker Myeclipse 编辑器

    总的来说,这个压缩包提供了一套完整的Freemarker学习资源,从基本的API文档到开发环境的集成工具,再到源码级别的深入研究。无论是初学者还是有经验的开发者,都可以从中找到自己需要的信息,提升对Freemarker的...

    FreeMarker实例教程,手把手教你FreeMarker的方方面面

    ### FreeMarker实例教程知识点详解 ...以上知识点覆盖了FreeMarker的主要方面,通过本教程的学习,读者不仅能够掌握FreeMarker的基本使用方法,还能够深入了解其高级特性,为日后解决复杂的Web开发问题打下坚实的基础。

    FreeMarker相关学习文档

    提供的"FreeMarker相关学习文档"可能包括模板语法详解、最佳实践、示例代码等内容,可以帮助初学者快速上手。通过阅读这些资料,你可以深入了解FreeMarker的各个方面,从而更好地利用这个强大的模板引擎。 总结,...

    freemarker解析成pdf

    首先,理解Freemarker的基本概念至关重要。Freemarker是一个基于模板的、与语言无关的模板引擎,它的主要工作是将数据模型和模板结合,生成最终的输出。模板是由开发者设计的,包含了一些特殊的语法元素,这些元素会...

    freemarker中文手册

    一、Freemarker基本概念 1. 模板:Freemarker模板是HTML或者其他格式的文本文件,其中包含了Freemarker特定的指令和表达式,用来插入、控制或计算数据。 2. 数据模型:这是提供给Freemarker模板的数据源,通常由应用...

    Freemarker 实例,Freemarker 实例

    Freemarker基本语法** - **变量(Variables)**: `${variable}` 用于输出变量值,如 `${user.name}`。 - **表达式(Expression)**:支持算术运算、比较、逻辑运算等,如 `${list.size() &gt; 5 ? 'big' : 'small'}`。 - ...

    freemarker 2.3.10架包

    在学习和使用Freemarker 2.3.10时,建议首先了解其基本语法,然后逐步熟悉高级特性。实践中,结合实际项目需求,可以创建自定义的Freemarker配置,以优化模板解析和渲染过程。此外,与Spring框架集成是常见的应用...

    freemarker代码

    一、Freemarker基本概念 1. 模板:Freemarker的核心是模板,模板是HTML或其他文本文件,其中包含Freemarker表达式和指令,这些元素会被解释并替换为实际值。 2. 数据模型:数据模型是Java对象集合,它们提供给模板...

    freemarker学习资料汇总

    这份手册通常会详细介绍Freemarker的基本概念,如模板语言、模板数据模型以及模板的执行流程。其中,可能会讲解模板元素,如`&lt;#if&gt;`、`&lt;#foreach&gt;`等控制结构,以及`${expression}`这样的变量引用方式。此外,还会...

    FreeMarker 2.3.18

    - **基本语法及实例**:`freemarker基本语法及实例.mht`提供了一些基础示例,帮助初学者快速上手。 3. **FreeMarker的优点和缺点**: - **优点**:FreeMarker易于学习,模板语言简洁,支持多种数据类型,与Java...

    nutz的freemarker视图插件

    首先,让我们深入了解Nutz和Freemarker的基本概念: 1. **Nutz**: - Nutz是一个基于Java的开源框架,它提供了一套全面的工具集,包括MVC、ORM、DAO、AOP等,以提高开发效率。 - Nutz的核心理念是简洁和高效,它...

    freemarker 2.3.18 中文手册

    10. **逻辑运算和比较**:Freemarker支持基本的逻辑运算符(`&&`、`||`、`!`)和比较运算符(`=`, `!=`, `, `&gt;`, `, `&gt;=`),以及`in`关键字用于检查成员关系。 11. **模板继承与布局**:通过`...

    新手理解FreeMarker的Project

    在这个"新手理解FreeMarker的Project"中,我们将深入探讨FreeMarker的基本概念、工作原理以及如何创建一个简单的项目。 1. **基本概念** - **模板语言**:FreeMarker使用的是一种简单的模板语言,允许在模板中嵌入...

    freemarker插件

    1. **Freemarker基本概念** - **模板**: Freemarker的核心是模板,它是纯文本文件,包含静态文本和控制结构(如条件语句和循环),以及数据引用。 - **数据模型**: 数据模型是Freemarker模板渲染时所依赖的对象...

    Freemarker 自定义标签 简单案例

    这些基础元素构成了Freemarker模板的基本语法。 自定义标签则是Freemarker的一个高级特性,允许我们扩展其内置功能,创建自己的模板标签。自定义标签通常以`&lt;@...&gt;`的形式出现,它们可以封装复杂的逻辑,提供更抽象...

    freemarker 简单项目示例

    本项目示例将深入探讨如何使用Freemarker来生成静态HTML页面,帮助你理解其基本原理和操作流程。 1. **Freemarker基础** - Freemarker是一个基于模板的开源Java库,它允许开发者通过定义模板语言(FTL,Freemarker...

Global site tag (gtag.js) - Google Analytics