freemarker 替换(方括号)语法

注意:

这个特性从 FreeMarker 2.3.4 版本后才可用。

FreeMarker 支持一个替换的语法。就是在 FreeMarker 的指令和注释中用 [ 和 ] 来代替 <和 > ,例如下面这个例子:

调用预定义指令: [#list animals as being]...[/#list]

调用自定义指令: [@myMacro /]

注释: [#-- the comment --]

为了使用这种语法从而代替默认语法,从模板开始,使用 ftl 指令都要使用这用语法。如果你不知道什么是 ftl 指令,那么就用 [#ftl] 来开始模板,要记住这个要放在文件的最前面(除了它前面的空格)。例如,下面的示例入门章节的最后一个例子使用这种替换语法的样子

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

这种替换语法(方括号)和默认语法(尖括号)在一个模板中是相互排斥的。那就是说,整个模板要么全部使用替换语法,要么全部使用默认语法。如果模板使用了替换语法,那么如 <#if ...> 这样的部分就会被算作是静态文本,而不是 FTL 标签了。类似地,如果模板使用默认语法,那么如 [#if ...] 这样的也会被算作是静态文本,而不是 FTL 标签。

如果你以 [#ftl ...] ( ... 代表可选的参数列表,当然仅用 [#ftl]s 也行)来开始文件,那文件就会使用替换(方括号)语法。如果使用 <#ftl ...> 来开始,那么文件就会使用正常(尖括号)语法。如果文件中没有 ftl 指令,那么程序员可以通过配置FreeMarker(程序员参看 API 文档的 Configuration.setTagSyntax(int) 来使用)来决定使用哪种语法。但是程序员可能使用默认配置。FreeMarker
2.3.x 版本默认配置

使用常规语法。而 2.4 版本中的默认配置将会自动检测,也就是说第一个 FreeMarker 标签决定了语法形式(它可以是任意的,而不仅仅是 ftl )。

freemarker 替换(方括号)语法

时间: 2024-07-30 13:46:19

freemarker 替换(方括号)语法的相关文章

FreeMarker的基础语法使用 &amp;&amp; 心得和技巧

FreeMarker语言 FreeMarker语言概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写. FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图) FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件. FreeMarker与容器无关,因

Freemarker的基本语法及入门基础

哈哈   原谅楼主的懒惰  剩下的假期过完再来补 一.freemarker模板文件(*.ftl)的基本组成部分        1. 文本:直接输出的内容部分        2. 注释:不会输出的内容,格式为<#--  注释内容  -->        3. 取值(插值):代替输出数据模型的部分,格式为${数据模型}或#{数据模型}        4. ftl指令:Freemarker指令,类似于HTML标记.                             内建指令:开始标签:<

使用FreeMarker替换JSP的10个理由

你还在使用 Java 服务器页面(俗称JSP)吗?我曾经也是,但是几年前我抛弃了它们,并且再也没有用过JSP了.JSP 是个很好的概念,但是它却剥夺了 web 开发的乐趣. 对我而言,这些都是小事,比如无法在页面模板上使用单独的文件header.jsp 和 footer.jsp,不能调用表达式语言的方法,在运行时无法合并,重新排列页面的各个部分.所以我转而使用 FreeMarker 模板.FreeMarker 已经存在一段时间了,如果你最近没有关注过 FreeMarker 的话,那这有些建议给你

FreeMarker语法知识

FreeMarker语法知识 FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:1,文本:直接输出的部分2,注释:<#-- ... -->格式部分,不会输出3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出 下面是一个FreeMarker模板的例子,包含了以上所说的4个部分<html><br>

FreeMarker 语法教程

FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不会输出 3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出 4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出 下面是一个FreeMarker模板的例子,包含了以上所说的4个部分 <html><br> <head&

Freemarker 常见语法大全

FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format} ------插值格式化(通用.数字.日期)${book.name?if_exists } //用于判断如果存在,就输出这个值 ${book.name?default(‘xxx’)}//默认值xxx ${book.name!"xxx"}//默认值xxx ${book.date?string('yyyy-MM-dd')} //日期格式 ${book?str

FreeMarker常用语法

转自:http://www.cnblogs.com/linjiqin/p/3388298.html FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format} ${book.name?if_exists } //用于判断如果存在,就输出这个值 ${book.name?default(‘xxx’)}//默认值xxx ${book.name!"xxx"}//默认值xxx ${book.date?string('yy

找到一份比较全面的freemarker语法总结

转载:http://www.havenliu.com/goodarticle/420.html 尊重原版 找到一份比较全面的freemarker语法总结 网上找到的.这份总结很全面.里面还有很详细的列子,一看就明白 语法 FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:1. 文本:直接输出的部分2. 注释:<#– … –>格式部分,不会输出3. 插值:即${…}或#{…}格式的部分,将使用数据模型中的部分替代输出4. FTL指令:F

FreeMarker的模板文件语法

FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不会输出 3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出 4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出 下面是一个FreeMarker模板的例子,包含了以上所说的4个部分 <html><br> <head&