`

freemarker 基本指令

阅读更多

一:if指令:
<#if condition>...
<#elseif condition2>...
<#elseif condition3>...
...<#else>...
</#if>

二:switch
<#switch value>
<#case refValue1>...<#break>
<#case refValue2>...<#break>...
<#case refValueN>...<#break>
<#default>...</#switch>

三:list,break
<#list sequence as item>
...
</#list>
两个特殊的循环变量:
item_index: 当前变量的索引值。
item_has_next: 是否存在下一个对象。

可以用<#break/>指令离开loop循环。

四:include指令
<#include filename>或者
<#include filenameoptions>
filename: 表达式转换为字符串
options: encoding=encoding, parse=parse encoding: 表达式转换为字符串
parse: 表达式转换为逻辑值,是否作为ftl文件解析。
<#include "/common/navbar.html" parse=false encoding="Shift_JIS">

<#include "*/footer.ftl">表示当前目录下以及所有父目录下的文件。如果当前模版在/foo/bar/template.ftl ,那么查找footer.ftl的顺序为:/foo/bar/footer.ftl
/foo/footer.ftl/footer.ftl这种方式讲允许设计者将通用的模版放在父文件夹里面。
也可以只指定部分路径:<#include "*/commons/footer.ftl">

五:import指令<#import path as hash>
六:noparse
<#noparse>
...
</#noparse>

七:compress
<#compress>
...
</#compress>
八:escape,noescape
<#escape identifier as expression>
...
<#noescape>...</#noescape>
...
</#escape>

escape指令body区的ftl的interpolations都会被自动加上escape表达式。但是不会影响字符串内的interpolations。而且也只会影响到body内出现的interpolations,比如不会影响到include的ftl的interpolations。

<#escape x as x?html>
First name: ${firstName}
Last name: ${lastName}
Maiden name: ${maidenName}</#escape>
等同于:
First name: ${firstName?html}
Last name: ${lastName?html}
Maiden name: ${maidenName?html}

escape指令在解析模版时起作用,而不是运行时起作用。

escape指令还能嵌套使用,子继承父的escape规则。

<#escape x as x?html>
Customer Name: ${customerName}
Items to ship:
<#escape x as itemCodeToNameMap[x]>
${itemCode1}
${itemCode2}
${itemCode3}
${itemCode4}
</#escape></#escape>
等同于:Customer Name: ${customerName?html}
Items to ship:
${itemCodeToNameMap[itemCode1]?html}
${itemCodeToNameMap[itemCode2]?html}
${itemCodeToNameMap[itemCode3]?html}
${itemCodeToNameMap[itemCode4]?html}

九:assign指令

<#assign name=value>
or
<#assign name1=value1name2=value2... nameN=valueN>
or
<#assign same as above... in namespacehash>
or
<#assign name>
  capture this
</#assign>
or
<#assign name in namespacehash>
  capture this
</#assign>
创建或者替换一个已经存在的变量,只能作用于顶层变量。
不好的做法:<#assign x>Hello ${user}!</#assign>
更改为:<#assign x="Hello ${user}!">


十:global指令
<#global name=value>
or
<#global name1=value1name2=value2... nameN=valueN>or<#global name>
capture this
</#global>
十一:local指令
<#local name=value>
or
<#local name1=value1name2=value2... nameN=valueN>or<#local name>
capture this
</#local>只能用于macro的定义body中。


十二:setting指令:

<#setting name=value>
name的取值范围:
local:number_format:
boolean_format:缺省值为"true,false"
date_format, time_format, datetime_format
time_zone:url_escaping_charset
classic_compatible

十三:用户自定义指令

<@macro_or_transfparam1=val1param2=val2...paramN=valN/><@macro_or_transfparam1=val1param2=val2...paramN=valN ; lv1, lv2, ..., lvN/><@macro_or_transf...>
  ...
</@macro_or_transf>

<@macro_or_transf...>
  ...
</@><@macro_or_transfval1, val2, ..., valN/>

十四:macro,nested,return
<#macro nameparam1param2... paramN>
...
<#nested loopvar1, loopvar2, ..., loopvarN>
...
<#return>
...
</#macro>

十五:function, return
<#function nameparam1param2... paramN>
... <#return returnValue>
...
</#function>

<#function avg x y>
<#return (x + y) / 2>
</#function>
${avg(10, 20)}

十六:flush
<#flush>

十七:stop
<#stop>
or
<#stop reason>取消处理模版。

十八:ftl指令
<#ftl param1=value1param2=value2...paramN=valueN>
ftl指令必须放在ftl文件的最上面。

参数范围:
encoding:
strip_whitespace
strip_text
strict_syntax

十九:t, lt, rt
二十:attempt, recover
<#attempt>
attempt block<#recover>
recover block
</#attempt>
<#attempt>
Optional content: ${thisMayFails}
<#recover>
Ops! The optional content is not available.
</#attempt>

分享到:
评论

相关推荐

    freemarker基本语法整理

    Freemarker 的宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量。宏的基本用法如下: ```html &lt;font size="+2"&gt;Hello Joe! ``` Struts2 环境中的 Freemarker 在 Struts2 环境中,...

    FreeMarker指令学习

    本篇文章将深入讲解FreeMarker的指令学习,包括其基本概念、主要指令以及实际应用。 一、FreeMarker的基本概念 1. 模板:FreeMarker的工作核心是模板,模板是一份HTML或XML文件,其中包含静态文本和FreeMarker...

    3freemarker指令1

    以下是对`3freemarker指令1`中涉及知识点的详细说明: 1. **ftl的if/else判断语句**: 在Freemarker模板语言中,`if`和`else`指令用于条件判断。基本语法如下: ```freemarker &lt;!-- 当expression为真时执行的...

    FreeMarker模板基本语法

    ### FreeMarker模板基本语法 #### 一、FreeMarker概述与基本用法 **FreeMarker**是一种强大的、基于Java的模板引擎,主要用于动态生成HTML页面,但也支持其他类型的文本格式(如XML、JavaScript、电子邮件等)。它...

    freemarker Demo 适用于freemarker初学

    这个"freemarker Demo"项目应该包含了基本的模板文件、Struts2配置以及相关的Java代码,通过实际运行和修改这些文件,初学者可以更好地理解Freemarker的工作原理和使用方法。在学习过程中,可以逐步尝试不同的表达式...

    FreeMarker中文文档.pdf下载

    - **基本指令**: - `&lt;#if&gt;`:条件判断。 - `&lt;#list&gt;`:循环遍历列表或数组。 - `&lt;#assign&gt;`:赋值。 - `&lt;#set&gt;`:设置变量。 - `&lt;#each&gt;`:循环遍历集合。 - **高级指令**: - `&lt;#macro&gt;`:定义宏,类似于...

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

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

    freemarker

    3. **Freemarker指令(Directives)**:这些是控制流程或结构的特殊标记,如`&lt;#if&gt;`、`&lt;#foreach&gt;`、`&lt;#assign&gt;`等。它们允许你在模板中进行条件判断、循环和变量赋值。 4. **内置函数(Built-in Functions)**:...

    FreeMarker相关学习文档

    3. 指令和变量:FreeMarker支持多种指令,如`&lt;#if&gt;`(条件判断)、`&lt;#foreach&gt;`(循环)和`&lt;#assign&gt;`(赋值)。变量则用于显示数据模型中的值。 二、FreeMarker的主要特性 1. 非脚本语言:FreeMarker模板不包含...

    freemarker入门文档及例子

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

    freemarker-2.3.22

    8. **自定义指令**:Freemarker允许定义自定义指令以扩展其功能,满足特定项目需求。 9. **最佳实践**:合理组织模板文件结构、避免模板过于复杂、正确处理null值等都是使用Freemarker时需要注意的最佳实践。 通过...

    freemarker代码

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

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

    通过这份手册,你可以了解到Freemarker的语法、指令、内置对象以及如何与Java代码进行交互等核心概念。例如,Freemarker支持控制结构(如if、foreach)、变量表达式、函数调用等,这些都是构建动态页面的基础。同时...

    velocity和freemarker的比较

    以上是对Velocity和FreeMarker的基本介绍和比较,它们都是Java Web开发中的重要工具,理解它们的特性和应用场景有助于选择最适合项目的技术栈。对于标签“源码”和“工具”,我们可以进一步研究这两个模板引擎的源...

    freemarker中文手册

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

    freemarker各种版本的jar包

    - 可能扩展了API,增加了新的功能,比如新的指令或函数,以增强模板的表达能力。 - 对模板语法的增强,例如新的控制结构或模板设计模式的改进。 4. **Freemarker 2.3.23**: - 这个版本可能包含了更多的安全修复...

    FreeMarker 手册

    FreeMarker的手册是一个详细的指南,它不仅介绍了FreeMarker的基本概念和使用方法,还深入到了高级主题,如自定义指令、命名空间、空白处理等。通过手册的学习,开发者可以掌握如何创建配置实例、定义数据模型、获取...

    FreeMarker 2.3.18

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

    freemarker学习资料汇总

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

    freemarker 2.3.10架包

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

Global site tag (gtag.js) - Google Analytics