freemarker 整理手册

2024-09-03 01:18
文章标签 整理 手册 freemarker

本文主要是介绍freemarker 整理手册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注释:包含在<#--和-->

<#local y = "test"> 定义局部变量

<#import "/lib/my_test.ftl" as my> 导入模板文件 指定名字空间 my

<#macro greet>     用户定义指令

  <font size="+2">Hello Joe!</font>

</#macro> 

Ø         作为用户定义指令使用宏变量时,使用@替代FTL标记中的#

<@greet></@greet>

Ø         如果没有体内容,也可以使用:

<@greet/>

<#macro greet person>

  <font size="+2">Hello ${person}!</font>

</#macro>

Ø         可以这样使用这个宏变量:

<@greet person="Fred"/> and <@greet person="Batman"/>

输出结果是:

  <font size="+2">Hello Fred!</font>

and   <font size="+2">Hello Batman!</font>

用户定义指令可以有嵌套内容,使用<#nested>指令执行指令开始和结束标记之间的模板片断

Ø         例子:

<#macro border>

  <table border=4 cellspacing=0 cellpadding=4><tr><td>

    <#nested>

  </tr></td></table>

</#macro> 


 if指令

<#if animals.python.price < animals.elephant.price>

  Pythons are cheaper than elephants today.

<#else>

  Pythons are not cheaper than elephants today.

</#if> 


 list指令

  <#list animals as being>

  <tr><td>${being.name}<td>${being.price} Euros

  </#list>

  <#list ["winter", "spring", "summer", "autumn"] as x>

       ${x}

  </#list>

<#list ["Joe", "Fred"] + ["Julia", "Kate"] as user>

- ${user}

</#list>

输出结果是:

- Joe

- Fred

- Julia

- Kate


include指令

<#include "/copyright_footer.html">


有一类特殊的字符串称为raw字符串,被认为是纯文本,其中的\和{等不具有特殊含义,该类字符串在引号前面加r,下面是一个例子:

${r"${foo}"}

${r"C:\foo\bar"} 

输出的结果是:

${foo}

C:\foo\bar 


<#assign ages = {"Joe":23, "Fred":25} + {"Joe":30, "Julia":18}>

- Joe is ${ages.Joe}

- Fred is ${ages.Fred}

- Julia is ${ages.Julia} 

输出结果是:

- Joe is 30

- Fred is 25

- Julia is 18 


 由于Freemarker会将>解释成FTL标记的结束字符,所以对于>和>=可以使用括号来避免这种情况,例如

<#if (x > y)>


内建函数

Ø         内建函数的用法类似访问散列的子变量,只是使用“?”替代“.”,下面列出常用的一些函数

Ø         字符串使用的:

n         html:对字符串进行HTML编码

n         cap_first:使字符串第一个字母大写

n         lower_case:将字符串转换成小写

n         upper_case:将字符串转换成大写

n         trim:去掉字符串前后的空白字符

Ø         序列使用的:

n         size:获得序列中元素的数目

Ø         数字使用的:

n         int:取得数字的整数部分(如-1.9?int的结果是-1)

Ø         例子(假设test保存字符串"Tom & Jerry"):

${test?html}

${test?upper_case?html}

输出结果是:

Tom &amp; Jerry

TOM &amp; JERRY 


string格式化单个Interpolation,下面是一个例子:

<#setting number_format="currency"/>

<#assign answer=42/>

${answer}

${answer?string}  <#-- the same as ${answer} -->

${answer?string.number}

${answer?string.currency}

${answer?string.percent}

输出结果是:

$42.00

$42.00

42

$42.00

4,200%


Ø         插入日期值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation,下面是一个使用格式模式的例子:

${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}

${lastUpdated?string("EEE, MMM d, ''yy")}

${lastUpdated?string("EEEE, MMMM dd, yyyy, hh:mm:ss a '('zzz')'")} 

输出的结果类似下面的格式:

2003-04-08 21:24:44 Pacific Daylight Time

Tue, Apr 8, '03

Tuesday, April 08, 2003, 09:24:44 PM (PDT)


Ø         插入布尔值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation,下面是一个例子:

<#assign foo=true/>

${foo?string("yes", "no")}

输出结果是:

yes



  数字Interpolation的#{expr; format}形式可以用来格式化数字,format可以是:

Ø         mX:小数部分最小X位

Ø         MX:小数部分最大X位

Ø         例子:

           <#-- If the language is US English the output is: -->

<#assign x=2.582/>

<#assign y=4/>

#{x; M2}   <#-- 2.58 -->

#{y; M2}   <#-- 4    -->

#{x; m1}   <#-- 2.6 -->

#{y; m1}   <#-- 4.0 -->

#{x; m1M2} <#-- 2.58 -->

#{y; m1M2} <#-- 4.0  -->


使用import指令导入库到模板中,Freemarker会为导入的库创建新的名字空间,并可以通过import指令中指定的散列变量访问库中的变量:

<#import "/lib/my_test.ftl" as my>

<#assign mail="fred@acme.com">

<@my.copyright date="1999-2002"/>

${my.mail}

${mail} 

输出结果:

  <p>Copyright (C) 1999-2002 Julia Smith. All rights reserved.

  <br>Email: jsmith@acme.com</p>

jsmith@acme.com

fred@acme.com 

这篇关于freemarker 整理手册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131611

相关文章

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

JavaScript整理笔记

JavaScript笔记 JavaScriptJavaScript简介快速入门JavaScript用法基础语法注释关键字显示数据输出innerHTML innerText属性返回值的区别调试 数据类型和变量数据类型数字(Number)字符串(String)布尔值(Boolean)null(空值)和undefined(未定义)数组(Array)对象(Object)函数(Function) 变量

关于回调函数和钩子函数基础知识的整理

回调函数:Callback Function 什么是回调函数? 首先做一个形象的比喻:   你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,手机

站长常用Shell脚本整理分享(全)

站长常用Shell脚本整理分享 站长常用Shell脚本整理分享1-10 站长常用Shell脚本整理分享11-20 站长常用Shell脚本整理分享21-30 站长常用Shell脚本整理分享31-40 站长常用Shell脚本整理分享41-50 站长常用Shell脚本整理分享51-59 长期更新

linux dlopen手册翻译

名称 dlclose, dlopen, dlmopen 打开和关闭一个共享对象 简介 #include <dlfcn.h>void *dlopen(const char*filename, int flags);int dlclose(void *handle);#define _GNU_SOURCE#include <dlfcn.h>void *dlmoopen(Lmid_t lm

我自己常用的eclipse 快捷键整理

---------------- 我自己改的快捷键: 复制当前行单下一行  ctrl alt n   --------------------- 自带快捷键: 快速定位到一行  CTRL+L 向上(下)移动选中的行:ALT+UP/DOWN ARROW 删除行(Delete Line):CTRL+D CTRL + 1也很有用     ----------

C/C++ 网络聊天室在线聊天系统(整理重传)

知识点: TCP网络通信 服务端的流程: 1.创建socket套接字 2.给这个socket绑定一个端口号 3.给这个socket开启监听属性 4.等待客户端连接 5.开始通讯 6.关闭连接 解释: socket:类似于接口的东西,只有通过这个才能跟对应的电脑通信。 每一台电脑都有一个IP地址,一台电脑上有多个应用,每个应用都会有一个端口号。 socket一般分为两种类型,一种是通讯,一种是监听

20190315 把整理和培养自己当作一生的事业,而不是局限在找工作拿offer。

把整理和培养自己当作一生的事业,而不是局限在找工作拿offer,做有本事的人。 来东南读研半年了,明显感觉自己掌握的不过是书本知识级别的中上水平,垃圾收集器这些的只知道背面经,靠脑子硬记,缺乏整理和系统,一头浆糊。 现在一边做实训这个烂项目,一边刷面经,一边刷剑指offer,想投些大公司的实习,又觉得还没准备好,看着各 种面经,都能说个大概,但明显感觉到自己知识的不体系和不深入,**做的项目