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

相关文章

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)