==============常用语法=================
EG.一个对象BOOK
1.输出 ${book.name}
空值判断:${book.name?if_exists },
${book.name?default(‘xxx’)}//默认值xxx
${ book.name!"xxx"}//默认值xxx
日期格式:${book.date?string('yyyy-MM-dd')}
数字格式:${book?string.number}--20
${book?string.currency}--<#-- $20.00 -->
${book?string.percent}—<#-- 20% -->
插入布尔值:
<#assign foo=ture />
${foo?string("yes","no")} <#-- yes -->
=============逻辑判断==================
2.
a:
<#if
condition>...
<#elseif condit
inc 发布于2007-09-08 16:18:57
ion2>...
<#elseif
condition3>......
<#else>...
其中空值判断可以写成<#if book.name?? >
</#if>
b:
<#switch value>
<#case
refValue1>
...
<#break>
<#case refValue2>
...
<#break>
...
<#case refValueN>
...
<#break>
<#default>
...
</#switch>
===============循环读取=================
3.
<#list sequence as item>
...
</#list>
空值判断<#if bookList?size = 0></#list>
e.g.
<#list employees as e>
${e_index}. ${e.name}
</#list>
<#if mole?default(0)!=0>
=============用来压缩空白空间和空白的行===============
用例
<#assign x = " moo
">
(<#compress>
1 2 3
4 5
${moo}
test only
I said, test only
)
输出
(1 2
3 4 5
moo
test only
I said, test only)
==============Sequence内置的计数器==============
3. Sequence内置的计数器: xxx_index
用途:显示序号
模板:
<#list employees as e>
${e_index}. ${e.name}
</#list>
输出:
1. Readonly
2. Robbin
==============Sequence内置的分段器=====================
4. Sequence内置的分段器: chunk
用途:某些比较BT的排版需求
模板:
<#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j']>
<#list seq?chunk(4) as row>
<ul>
<li><#list row
as cell>${cell} </#list></li>
</ul>
</#list>
<#list seq?chunk(4, '-') as row>
<tr>
<td><#list row
as cell>${cell} </#list></td>
</tr>
</#list>
输出:
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
</ul>
<ul>
<li>e</li>
<li>f</li>
<li>g</li>
<li>h</li>
</ul>
<ul>
<li>i</li>
<li>j</li>
</ul>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
</tr>
<tr>
<td>e</td>
<td>f</td>
<td>g</td>
<td>h</td>
</tr>
<tr>
<td>i</td>
<td>j</td>
<td>-</td>
<td>-</td>
</tr>
=====================freemarker的list================================
Scalar String:${scalarString}
Scalar Number:${scalarNumber}
Object is:${scalarObject}
List使用样例-List元素为Scalar对象:
<#list scalarList as value0>
Scalar List值:${value0}
</#list>
List使用样例-List元素为User对象:
<#list userList as listUser>
List对象User Id值:${listUser.userId}
</#list>
Map使用样例-Map Values元素为Scalar :
<#list scalarMap?keys as mykey>
Scalar Map key is :${mykey}
Scalar Map value is:${scalarMap[mykey]}
</#list>
Map使用样例-Map Values元素为User对象:
<#list userMap?keys as key1>
<#assign mapUser="${userMap[key1]}" >
User Object is :${mapUser}
<#--
以下方法有问题
User is
:${mapUser.userId} <br>
-->
</#list>
==============FreeMarker中list排序==============
升序:
<#list list?sort_by("time") as
v>
</#list>
降序:
<#list list?sort_by("time") as v>
</#list>
===============freemarker在模板中定义变量==============
在模板中定义的变量有三种类型:
plain变量:可以在模板的任何地方访问,包括include指令插入的模板,使用assign指令创建和替换
<#include "/WEB-INF/index/top.html">
==============freemarker.properties配置================
(1)解决输出中文乱码问题:
default_encoding=UTF-8
locale=zh_CN
number_format=#
(2)提高freemarker的性能
template_update_delay=60000
(3)freemarker的标签种类:
${..}
# 代表是FTL tags
<#if
...></#if>
<#list totalList as
elementObject>...</#list>
@ ,代表用户自定义的标签
<#-- --> 注释标签,注意不是<!-- -->
=====================将图片整除换行====== <#if
(u_index+1)%4=0>当图片超过五个就换行=======
<table
width="100%">
<tr>
<td><table
width="100%">
<tr>
<#if map["最新-图片"]?exists>
<#list map["最新-图片"] as u>
<#if (u_index+1)%4=0>
<td><table width="70" height="65"
border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="middle"
bgcolor="#6F7074">
<a
target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2
"><img src="${u.chartpath?default('')}" width="67" height="41" border="0"
/></a></td>
</tr>
<tr>
<td align="center"
bgcolor="#6F7074">
<a
target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 "
class="tableff">
<@jf.greet
title=u.title len=4 /></a>
</td>
</tr>
</table></td></tr><tr >
<#else>
<td><table width="70"
height="65" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="middle"
bgcolor="#6F7074">
<a
target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2
"><img src="${u.chartpath?default('')}" width="67" height="41" border="0"
/></a></td>
</tr>
<tr>
<td align="center"
bgcolor="#6F7074">
<a
target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 "
class="tableff">
<@jf.greet
title=u.title len=4 /></a>
</td>
</tr>
</table></td>
</#if>
</#list>
</#if>
</tr>
</table>
</td>
</tr>
</table>
</tr>
</table></td>
</#if>
</#list>
</#if>
</tr>
</table>
</td>
</tr>
</table>
===============================freemarker中在application
${Application.web_title}
在类里:
list=dser.indexvideo(cvo);
if(list.size()!=0){
map.put("最新",list);}
在html静态页里:
<#import
"/WEB-INF/ftl/index.ftl" as jf>
(index.ftl
<#macro greet title len>
<#if title?length != 0>
<#if
(title?length>len)>
${title[0..len-1]}
<#else>
${title?trim}
</#if>
<#else>
${title?default("")}
</#if>
</#macro>
<#--时间比较-->
<#macro vstime start end>
<#if start?default("")==""||end?default("")=="">
--
<#else>
<#assign starts=start?replace("-","") >
<#assign ends=end?replace("-","") >
<#if (starts?number>ends?number)>
<font color="red">以过期</font>
<#else>
未过期
</#if>
</#if>
</#macro>
)
<#if map["最新"]?exists>
<#list map["最新"] as u>
${u.filepath?default('')}
<@jf.greet title=u.title len=6 />
</#list></#if>
来源:http://www.oschina.net/question/16_3439
相关推荐
### FreeMarker语法详解 #### 一、FreeMarker模板文件组成 FreeMarker模板文件与普通的HTML页面相比,并不显得更为复杂。其主要组成部分包括: 1. **文本**:这部分内容会被直接输出到最终生成的文档中。 2. **...
总结,FreeMarker语法提供了丰富的表达能力和控制结构,使得模板编写灵活且易于维护。通过熟练掌握这些知识,开发者可以高效地生成动态内容,提高开发效率。在实际项目中,结合源码理解和工具辅助,能更好地利用...
以下是关于Freemarker语法规则的详细解释: 1. **变量表达式**: Freemarker中的变量表达式通常以`${}`包裹,用来输出Java对象的属性值。例如,如果有一个名为`user`的对象,其`name`属性为"张三",那么`${user....
### Java Freemarker 语法详解 #### 一、Freemarker 概述与基本概念 Freemarker 是一种用于生成动态内容的模板引擎,它能够帮助开发者将数据模型中的数据渲染到 HTML 页面上,从而实现前后端分离的效果。...
根据提供的文件信息,我们可以深入探讨FreeMarker的基础语法及其在模板引擎中的应用。FreeMarker是一种用于生成文本输出的模板引擎,广泛应用于Web开发中,能够帮助开发者动态生成HTML、XML等格式的内容。接下来,...
本文将对 Freemarker 的基本语法进行整理,涵盖输出、逻辑判断、循环遍历、宏等方面的知识点。 输出 在 Freemarker 中,输出变量的值可以使用 `${}` 语法,例如 `${student.name}`。如果变量为空,可以使用 `?if_...
本文将全面总结FreeMarker的语法,帮助初学者快速掌握其核心概念。 1. **模板基本结构** - **文本**:模板中的大部分内容是纯文本,会被直接输出。 - **注释**:使用`<#-- ... -->`包裹的内容为注释,不会出现在...
以下是关于Freemarker语法的详细说明: 1. **Scalars**: - 字符串:可以通过单引号或双引号定义,特殊字符需要转义。 - 数字:直接写入,支持整数和浮点数,但不支持科学计数法。 - 日期:通常从数据模型获取,...
### Freemarker(FTL)常见语法详解 Freemarker是一种基于模板引擎技术的软件,用于生成文本输出。它被广泛应用于Web开发中,用来生成HTML页面或其他格式的文档。Freemarker使用简单直观的语法,使得开发者能够轻松...
它提供了丰富的语法结构和指令来实现复杂的逻辑控制和数据处理。以下是对 Freemarker 语法的详细解释: 1. **指令:** - **if, else, elseif**:用于条件判断。`<#if condition>`检查条件,如果为真则执行相应代码...
FreeMarker支持丰富的表达式语法,可以用来进行各种计算、逻辑判断等。 1. **直接值表达式**:可以直接引用变量名,如 `${"我的路径C://"}`。为了转义特殊字符,FreeMarker支持多种转义符号,例如 `/";` 表示双引号...
- **FreeMarker**提供了多种循环结构,如`<#list items as item>`,可以处理不同的数据类型和复杂度。 - **Velocity**也支持循环,但其语法相对简单,通常使用`#foreach($item in $items)`这样的形式。 3. **条件...
它们用于控制模板的逻辑,例如循环(`#list`)、条件判断(`#if`,`#else`等)、包含其他模板(`#include`)等。指令可以是开始标签、结束标签或空标签形式,且需要正确嵌套,如同XML。 例如,以下是一个简单的...
总之,FreeMarker语法大全涵盖了从基础语法到高级特性的全方位知识,熟练掌握这些内容,你就能自如地利用FreeMarker构建高效、可维护的模板系统。通过不断地实践和学习,你将成为FreeMarker的专家,为你的项目带来...
### FreeMarker语法详解 #### 一、概述 FreeMarker是一个强大的模板引擎,广泛应用于Web开发领域,用于将数据模型中的数据动态地填充到HTML、XML等格式的文档中。其核心概念包括文本、注释、插值以及FTL指令。 ##...
在本教程中,我们将探讨如何利用Freemarker模板来导出Word文档,并实现循环插入图片和表格的功能。这对于需要批量生成定制化报告或者文档的应用场景非常有用。 首先,我们需要了解Freemarker的基本语法。在...
在`FreeMarker语法之表达式(一)`和`FreeMarker语法之表达式(二)`中,详细解释了各种类型的表达式,包括访问对象属性、数组和集合等。 - **遍历List**:在`Freemarker中如何遍历List.mht`中,会讲解如何使用`...