`

freemarker 数据基础

 
阅读更多

FreeMarker数据基础

2010-07-02 09:55:02| 分类: FreeMarker 2.3.1 | 标签: |字号 订阅

1.数据两种表示(在${}中):

例如下:

(root)    |    +- animals    |   |    |   +- (1st)    |   |   |    |   |   +- name = "mouse"    |   |   |    |   |   +- size = "small"    |   |   |    |   |   +- price = 50    |   |    |   +- (2nd)    |   |   |    |   |   +- name = "elephant"    |   |   |    |   |   +- size = "large"    |   |   |    |   |   +- price = 5000    |   |    |   +- (3rd)    |       |    |       +- name = "python"    |       |    |       +- size = "medium"    |       |    |       +- price = 4999    |    +- whatnot        |        +- fruits            |            +- (1st) = "orange"            |            +- (2nd) = "banana"  

第一种表示方法:whatnot.fruits[1](表示的是fruits下的值为banana的变量)。

 

第二种表示方法:直接用点号分隔到属性-----animals[0].size(表示animals下的第一个部分中的size属性,其值为small)。

 

2.FreeMarker中的三种类型:

${...}:输出时,FreeMarker将会用确定的值代替它。

FTL标签:在FreeMarker中使用#开头。

注释:在FreeMarker中注释方法为<#-- -->。

 

例1:

简单的判断:

<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>
Welcome ${user}<#if user == "Big Joe">, our beloved leader</#if>!
</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!

<#if animals.python.price < animals.elephant.price>
Pythons are cheaper than elephants today.
<#else>
Pythons are not cheaper than elephants today.
</#if>

</body>
</html>

 

例2:

列表list:

输入:

 

<p>We have these animals:  <table border=1>    <tr><th>Name<th>Price    <#list animals as being>    <tr><td>${being.name}<td>${being.price} Euros    </#list>  </table>  

 

前台输出:

 

<p>We have these animals:  <table border=1>    <tr><th>Name<th>Price    <tr><td>mouse<td>50 Euros    <tr><td>elephant<td>5000 Euros    <tr><td>python<td>4999 Euros  </table>  

 

 

例3:

包含文件(include):

 

<html>  <head>    <title>Test page</title>  </head>  <body>    <h1>Test page</h1>    <p>Blah blah...  <#include "/copyright_footer.html">  </body>  </html>  

 

 

3.嵌套使用指令

例4:

输出列表并使size为"larger"的输出font比其他的大:

 

<p>We have these animals:  <table border=1>    <tr><th>Name<th>Price    <#list animals as being>    <tr>      <td>        <#if being.size == "large"><font size="+1"></#if>        ${being.name}        <#if being.size == "large"></font></#if>      <td>${being.price} Euros    </#list>  </table>  

 

 

 

4.两种处理变量丢失方法。

FreeMarker不能容忍变量丢失,除非事先指示如果丢失怎么处理

(!注意:在FreeMarker中不存在变量和变量的值为null是等价的,所以这里这两种情况都适用)

第一种方式:

 

<h1>Welcome ${user!"Anonymous"}!</h1>  

 

第二种方式:

 

<#if user??><h1>Welcome ${user}!</h1></#if>  

 

(!注意:如果写成这样animals.python.price!0,只有animals.python 没有丢失才正确,

如果animals或者python丢失,将会报"undefined variable"错误,这时,你可以写成(animals.python.price)!0的模式,可以避免这个问题

(!注意:和上面一样animals.python.price??也应该写成(animals.python.price)??)

(!注意:在2.4版本及之前,${x!1 + y}将被误解为${x!(1 + y)} ,所以,应当写成${(x!1) + y}形式

如果希望默认值为0或者false,可以写成如下形式:

 

(${mouse!})  <#assign mouse = "Jerry">  (${mouse!})  

 

输出:

 

()  (Jerry)  

 

例5:

 

<#if mouse??>    Mouse found  <#else>    No mouse found  </#if>  Creating mouse...  <#assign mouse = "Jerry">  <#if mouse??>    Mouse found  <#else>    No mouse found  </#if>  

 

输出:

 

  No mouse found  Creating mouse...    Mouse found  

 

5.FreeMarker中特殊变量及意义

官方地址:http://www.freemarker.org/docs/ref_specvar.html

分享到:
评论

相关推荐

    FreeMarker的基础知识整理

    FreeMarker 是一种强大的模板语言,主要用于生成动态内容,如HTML页面。...FreeMarker的核心概念是将静态的...对于初学者来说,理解FreeMarker的基础知识,如变量类型、模板结构和插值机制,是掌握这一技术的关键步骤。

    freemarker获取数据

    一、Freemarker基础 1. 模板语言:Freemarker使用一种简单的文本模板语言,它不包含任何编程语句,只有控制结构(如`if`、`for`)和变量引用。变量通常以`${}`或`#set`指令表示。 2. 数据模型:Freemarker与后端...

    Freemarker实现excel导出功能

    一、Freemarker基础 1. 模板语言:Freemarker是一种基于模板的语言,它允许开发者通过简单的语法(如 `${}` 和 `#if`)来动态地生成文本输出,如HTML、XML或者,如我们所关注的,Excel文件。 2. 数据模型:在使用...

    非常好的Freemarker中文教程

    1. **基础概念**:Freemarker的工作原理,模板语言的基础元素,如变量、表达式、控制结构(if/else、foreach)以及注释等。 2. **数据模型**:理解如何将Java对象绑定到模板,包括基本类型、集合、Map等数据结构的...

    freemarker

    2. **数据模型(Data Model)**:数据模型是Freemarker用来渲染模板的数据源,它可以是Java对象、Map、List等任何形式。在Java中,通常通过`ModelAndView`或`Map`将数据传递给Freemarker。 3. **Freemarker指令...

    FreeMarker手册-Freemarker 2.3.18

    在Web应用中,FreeMarker常与Model-View-Controller(MVC)模式结合使用,控制器将处理业务逻辑,模型提供数据,而FreeMarker作为视图负责渲染输出。 8. **错误处理和调试** FreeMarker提供了丰富的错误处理机制...

    freemarker-2.3.28.jar

    9. **模板继承与布局**: Freemarker支持模板继承,通过`&lt;#include&gt;`和`&lt;#assign&gt;`等指令,可以创建基础模板并由子模板进行扩展,实现页面布局的统一。 10. **函数和方法调用**: FTL中可以调用Java方法,这使得模板...

    freemarker 语法基础(转).

    ### FreeMarker 语法基础 #### 一、FreeMarker 模板结构 FreeMarker 是一种用于生成文本输出的模板引擎,其模板文件结构简单且易于理解。一个典型的 FreeMarker 模板文件由以下四个主要部分组成: 1. **文本**:...

    freemarker入门文档及例子

    二、Freemarker语法基础 1. 变量表示: `${variable}` 用于输出变量的值,`variable`是Java对象的属性或方法名。 2. 注释:`&lt;#-- comment --&gt;` 用于在模板中添加注释,不会出现在生成的输出中。 3. 输出处理:`...

    FreeMarker

    FreeMarker 提供了一些基础的语法结构,如变量赋值、条件语句、循环等。下面是一些常见的符号和命令的解释: - **变量赋值**:使用 `&lt;#assign name=value&gt;` 来赋值。 - **条件语句**:可以使用 `&lt;#if expression&gt;` ...

    freemarker培训课件

    具体而言,开发者创建模板,这些模板包含固定文本、变量插值、逻辑控制结构等元素,通过将数据模型中的数据注入到模板中,Freemarker能够生成动态的文本输出。 ### 3. 模板开发 #### 模板组成 - **Text文本**:...

    freemarkerdemo 生成word 插入图片

    1. **Freemarker基础知识**:Freemarker是一个基于模板的语言,它允许开发者通过定义模板文件,然后结合Java对象数据,生成动态内容。模板文件中包含了一系列控制结构(如条件语句、循环)和变量引用,这些变量可以...

    freemarker中文学习资料

    1. **Freemarker基础概念** - **模板语言**:Freemarker使用一种简单的、声明式的模板语言,允许开发者编写模板,与后台数据模型结合,生成动态内容。 - **数据模型**:Freemarker模板与应用程序的数据模型进行...

    freemarker基础v1.1.pdf

    数据模型在Freemarker中可以是各种类型,包括基本的Java数据类型如字符串、整数,以及复杂的数据结构如列表(List)、映射(Map)和Java对象(Pojo)。例如,你可以将一个包含公司地址和电话号码的Map对象绑定到模板,然后...

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

    例如,Freemarker支持控制结构(如if、foreach)、变量表达式、函数调用等,这些都是构建动态页面的基础。同时,手册还会详细介绍如何配置和优化Freemarker以适应你的项目需求。 其次,`freemarker 插件 安装提示....

    freemarker基础

    在本资料中,我们将深入探讨Freemarker的基础知识,包括其基本语法、数据模型、模板设计以及如何在实际项目中使用它。 1. **Freemarker语法** Freemarker的核心是模板语言,由控制结构(如条件语句和循环)、变量...

    freemarker基础代码

    总之,学习FreeMarker的基础,包括理解模板语法、数据模型绑定、配置设置以及内置指令的使用,是Java Web开发中的一项重要技能。熟练掌握FreeMarker能让你更高效地构建表现层,提升开发效率。通过不断实践和深入研究...

    Freemarker分页

    在这个例子中,我们看到的是如何在使用Struts2框架的基础上,集成Freemarker进行分页处理。以下是对这个主题的详细讲解: 首先,**Freemarker** 是一个模板引擎,它允许开发者通过定义模板来生成HTML或其他文本格式...

    Freemarker 自定义标签 简单案例

    开发者定义模板文件,然后在后端填充数据模型,Freemarker会根据这些数据渲染出最终的输出。 在Freemarker中,`&lt;#...&gt;`是内置的指令,如`&lt;#if&gt;`、`&lt;#foreach&gt;`等,它们允许我们在模板中进行条件判断、循环等操作。...

Global site tag (gtag.js) - Google Analytics