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!})
|
|
|
|
输出:
例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 是一种强大的模板语言,主要用于生成动态内容,如HTML页面。...FreeMarker的核心概念是将静态的...对于初学者来说,理解FreeMarker的基础知识,如变量类型、模板结构和插值机制,是掌握这一技术的关键步骤。
一、Freemarker基础 1. 模板语言:Freemarker使用一种简单的文本模板语言,它不包含任何编程语句,只有控制结构(如`if`、`for`)和变量引用。变量通常以`${}`或`#set`指令表示。 2. 数据模型:Freemarker与后端...
一、Freemarker基础 1. 模板语言:Freemarker是一种基于模板的语言,它允许开发者通过简单的语法(如 `${}` 和 `#if`)来动态地生成文本输出,如HTML、XML或者,如我们所关注的,Excel文件。 2. 数据模型:在使用...
1. **基础概念**:Freemarker的工作原理,模板语言的基础元素,如变量、表达式、控制结构(if/else、foreach)以及注释等。 2. **数据模型**:理解如何将Java对象绑定到模板,包括基本类型、集合、Map等数据结构的...
2. **数据模型(Data Model)**:数据模型是Freemarker用来渲染模板的数据源,它可以是Java对象、Map、List等任何形式。在Java中,通常通过`ModelAndView`或`Map`将数据传递给Freemarker。 3. **Freemarker指令...
在Web应用中,FreeMarker常与Model-View-Controller(MVC)模式结合使用,控制器将处理业务逻辑,模型提供数据,而FreeMarker作为视图负责渲染输出。 8. **错误处理和调试** FreeMarker提供了丰富的错误处理机制...
9. **模板继承与布局**: Freemarker支持模板继承,通过`<#include>`和`<#assign>`等指令,可以创建基础模板并由子模板进行扩展,实现页面布局的统一。 10. **函数和方法调用**: FTL中可以调用Java方法,这使得模板...
### FreeMarker 语法基础 #### 一、FreeMarker 模板结构 FreeMarker 是一种用于生成文本输出的模板引擎,其模板文件结构简单且易于理解。一个典型的 FreeMarker 模板文件由以下四个主要部分组成: 1. **文本**:...
二、Freemarker语法基础 1. 变量表示: `${variable}` 用于输出变量的值,`variable`是Java对象的属性或方法名。 2. 注释:`<#-- comment -->` 用于在模板中添加注释,不会出现在生成的输出中。 3. 输出处理:`...
FreeMarker 提供了一些基础的语法结构,如变量赋值、条件语句、循环等。下面是一些常见的符号和命令的解释: - **变量赋值**:使用 `<#assign name=value>` 来赋值。 - **条件语句**:可以使用 `<#if expression>` ...
具体而言,开发者创建模板,这些模板包含固定文本、变量插值、逻辑控制结构等元素,通过将数据模型中的数据注入到模板中,Freemarker能够生成动态的文本输出。 ### 3. 模板开发 #### 模板组成 - **Text文本**:...
1. **Freemarker基础知识**:Freemarker是一个基于模板的语言,它允许开发者通过定义模板文件,然后结合Java对象数据,生成动态内容。模板文件中包含了一系列控制结构(如条件语句、循环)和变量引用,这些变量可以...
1. **Freemarker基础概念** - **模板语言**:Freemarker使用一种简单的、声明式的模板语言,允许开发者编写模板,与后台数据模型结合,生成动态内容。 - **数据模型**:Freemarker模板与应用程序的数据模型进行...
数据模型在Freemarker中可以是各种类型,包括基本的Java数据类型如字符串、整数,以及复杂的数据结构如列表(List)、映射(Map)和Java对象(Pojo)。例如,你可以将一个包含公司地址和电话号码的Map对象绑定到模板,然后...
例如,Freemarker支持控制结构(如if、foreach)、变量表达式、函数调用等,这些都是构建动态页面的基础。同时,手册还会详细介绍如何配置和优化Freemarker以适应你的项目需求。 其次,`freemarker 插件 安装提示....
在本资料中,我们将深入探讨Freemarker的基础知识,包括其基本语法、数据模型、模板设计以及如何在实际项目中使用它。 1. **Freemarker语法** Freemarker的核心是模板语言,由控制结构(如条件语句和循环)、变量...
总之,学习FreeMarker的基础,包括理解模板语法、数据模型绑定、配置设置以及内置指令的使用,是Java Web开发中的一项重要技能。熟练掌握FreeMarker能让你更高效地构建表现层,提升开发效率。通过不断实践和深入研究...
在这个例子中,我们看到的是如何在使用Struts2框架的基础上,集成Freemarker进行分页处理。以下是对这个主题的详细讲解: 首先,**Freemarker** 是一个模板引擎,它允许开发者通过定义模板来生成HTML或其他文本格式...
开发者定义模板文件,然后在后端填充数据模型,Freemarker会根据这些数据渲染出最终的输出。 在Freemarker中,`<#...>`是内置的指令,如`<#if>`、`<#foreach>`等,它们允许我们在模板中进行条件判断、循环等操作。...