`
fred2005
  • 浏览: 26055 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Freemarker指令

    博客分类:
  • java
阅读更多

一: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
: 表达式转换为字符串
optionsencoding=encodingparse=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 loopvar1loopvar2...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>

分享到:
评论

相关推荐

    3freemarker指令1

    3freemarker指令1

    FreeMarker指令学习

    NULL 博文链接:https://zhxing.iteye.com/blog/391965

    FreeMarker常用指令

    FreeMarker的FTL指令也是模板的重要组成部分,这些指令可实现对数据模型所包含数据的抚今迭代,分支控制.除此之外,还有一些重要的功能,也是通过FTL指令来实现的.

    freemarker总结

    该指令用于导入FreeMarker模板中的所有变量,并将该变量放置在指定的Map对象中,import指令的语法格式如下: 上面的代码将导入/lib/common.ftl模板文件中的所有变量,将这些变量放置在一个名为com的Map对象中. 创建...

    FreeMarker标签、指令

    FTL指令规则,插值规则,表达式,FreeMarker 的常用指令,

    freemarker培训

    1开发freemarker准备工作,运行第一个freemarker 22freemarker基本数据交互 33freemarker指令 44ftl数值计算和默认value以及value转换 基本插件安装,文档以及项目源代码。

    freemarker

    如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是, /&gt; 和指令之间不允许有空白字符. 2, 插值规则 FreeMarker的插值有如下两种类型:1,...

    freemarker自定义的通用分页指令(标签)源码和使用示例

    一个用FTL定义的非常通用数据分页指令,有源码,有使用示例。使用效果图可以参看本人博客中的相关文章:http://blog.csdn.net/qjyong/archive/2009/10/18/4693142.aspx

    freemarker概述

    freemarker 的概述,FreeMarker设计指南(1),freemarker的指令及原理

    freemarker语法知识

    FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:格式部分,不会输出 ...4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出

    freemarker语法完整版

    B 指令 if, else, elseif 语法 Java代码 &lt;#if condition&gt; ... &lt;#elseif condition2&gt; ... &lt;#elseif condition3&gt; ... ... &lt;#else&gt; ... &lt;/#if&gt; ... ... ... ... ... 用例 ...

    FreeMarker模版PPT

    FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具 在简单的HTML中加入了一些由${…}包围的特定代码,这些特定代码是FreeMarker的指令,而包含FreeMarker的指令的文件就称为模板(Template)

    freemarker格式化缩进文本或include指令

    NULL 博文链接:https://yuanhuiwu.iteye.com/blog/1133067

    FreeMarker整理

    FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个...4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出 下面是一个FreeMarker模板的例子,包含了以上所说的4个部分

    freemarker03

    freemarker03_常用指令

    FreeMarker教程pdf版

    不错的FreeMarker教程,FreeMarker的模板文件并不比...格式部分,不会输出 3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出 4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出

    FreeMarker学习资料

    FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:;...4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出

    Freemarker常用指令使用示例

    主要介绍了Freemarker常用指令使用示例,步骤简单,大家参考使用吧

    freemarker模版继承

    扩充freemarker实现模版继承指令,可以实现类似java的继承,模版现在也可以继承了,也可以实现接口.freemarker interface,freemarker extends

    Struts2 与Freemarker 的配置方法

    Freemarker是模板引擎,也可以说是一种表现层的框架,它有自己的模板指令,开发者如果不熟悉这些语法,很难进行表现层的开发。Struts2框架技术对Freemarker做了很好的支持,开发人员只要熟悉Struts2的标签即可进行...

Global site tag (gtag.js) - Google Analytics