freemarker常见语法大全

发布 2021-05-11 04:45:28 阅读 6167

freemarker的插值有如下两种类型:1,通用插值$;2,数字格式化插值:#或#

//用于判断如果存在,就输出这个值。

//默认值xxx

//日期格式。

#-- yes --

大小比较符号使用需要注意:(xml的原因),可以用于比较数字和日期。

使用lt、lte、gt和gte来替代<、<和》= 也可以使用括号<#if (x>y)>

内置函数: 调用区别于属性的访问,使用?代替。

常见的一些内置函数。

对于字符串。

html-对字符串进行html编码。

cap_first-使字符串第一个字母大写。

lower_case-将字符串转换成小写。

trim-去掉字符串前后的空白字符。

示例:$对于sequences(序列)

size-获得序列中元素的数目。

对于数字。int-取得数字的整数部分(如-1.9?int的结果是-1)

对于集合,可以使用数组的方式,使用下标索引进行访问。

逻辑判断:if

#if condition>..

#elseif condition2>..

#elseif condition3>..

#else>..

boolean类型的空值判断。

空值判断可以写成<#if > 注意${}为变量的渲染显示,而<>为定义等操作符的定义。

switch

#switch value>

#case refvalue1>

#break>

#case refvalue2>

#break>

#case refvaluen>

#break>

#default>

快速定义int区间的集合。

#assign l=0..100/> 注意不需要。

3:循环读取集合: 注意/的使用。

#list student as stu>

与jstl循环类似,也可以访问循环的状态。

item_index:当前变量的索引值。

item_has_next:是否存在下一个对象其中item名称为as后的变量名,如stu

集合长度判断。

#if student?size !=0> 判断=的时候,注意只要一个=符号,而不是==

宏/模板。初步了解: 使用更像一个闭包closure,可以定义后,在脚本中任意地方引用,并原地起作用。

#macro greet>

hello joe!

使用的方式为:

@greet> /同xml可以简写成<@greet/>

宏的参数定义,类似js,在宏名后带参数进行传递定义。

#macro greet person color>

调用带参数时,注意使用类似xml的属性格式进行传递,不需要关心顺序问题。

@greet person="fred" color="black"/>

参数默认值定义,如果没有,就必须要求传递完整的参数列表。

#macro greet person color="black">

hello $!

使用xml的嵌套内容进行传递宏调用,关键标签 <#nested>

#macro border>

#nested>

调用时:@border>the bordered text

#nested> 标签可以在宏中多次调用,也可以将多个宏组合进行嵌套。

for循环的精简版:

#list 1..count as x>

宏的循环变量,配合嵌套标签进行参数传递,#macro repeat count>

#list 1..count as x>

#nested x, x/2, x==count> /这里的三个参数,将会传递到嵌套内容中。

@repeat count=4 ; c, halfc, last>

#if last> last! /这里的内容由macro中的<#nested>进行参数的传递,传递的数量任意,当注意需要宏接受这些。

上述还需要注意;的使用。

参数的数量是可变的,并不要求全部都有,但是效果不同。

在模板中定义变量。

在模板中定义的变量有三种类型:

plain变量:可以在模板的任何地方访问,包括使用include指令插入的模板,使用assign指令创建和替换。

局部变量:在宏定义体中有效,使用local指令创建和替换。

循环变量:只能存在于指令的嵌套内容,由指令(如list)自动创建;宏的参数是局部变量,而不是循环变量。

#assign x = plain"> 全局的plain变量。

内部循环变量将会隐藏同名的外部循环变量。

外部导入的使用,可以用于模块化,并且提供公用性。

如:lib/my_文件。

#macro copyright date>

copyright (c) $julia smith. all rights reserved.

email: $

#assign mail =

lib/my_文件。

#import "/lib/my_" as my>

#assign mail=""

date="1999-2002"/>

输出结果将不会出现冲突。

对于库中的变量修改,使用in关键字。

#assign mail=""in my>

函数定义:区别于宏对象,带返回值。

#function name param1 param2><#return val>函数,有返回参数。

stringa[m ..n] 取子字符串,类似substring(stringa, m, n)

#include "/copyright_">导入其他页面元素。

#include filename options>

options包含两个属性。

encoding=”gbk” 编码格式。

parse=true 是否作为ftl语法解析,默认是true,false就是以文本方式引入。注意在ftl文件里布尔值都是直接赋值的如parse=true,而不是。

parse=”true”

hash与list的定义。

#assign c= >

对变量的缺省处理。

red"用compress directive或者transform来处理输出。

#compress>..消除空白行。

@compress single_line=true>..将输出压缩为一行。都需要包裹所需文档。

freemarker可用"["代替"<"在模板的文件开头加上[#ftl].

注释部分。#-- 注释部分 --

数字输出的另外一种方式。

#,这个例子是用于输出数字的格式化,保留小数的位数,详细如下。

数字格式化插值可采用#形式来格式化数字,其中format可以是:

mx:小数部分最小x位。

mx:小数部分最大x位。

在定义字符串的时候,可以使用''或者"",对特殊字符,需要使用\进行转义。

如果存在大量特殊字符,可以使用$进行过滤。

map对象的key和value都是表达式,但是key必须是字符串。

可以混合使用。和[""访问。

name"] 混合使用点语法和方括号语法。

为了处理缺失变量,freemarker提供了两个运算符: 用于防止对象不存在而导致的异常。

:指定缺失变量的默认值。

?:判断某个变量是否存在,返回boolean值。

noparse指令指定freemarker不处理该指定里包含的内容,该指令的语法格式如下:

#noparse>..

使用html对字符进行格式化处理,对于《等的过滤。

escape , noescape指令,对body内的内容实用统一的表达式。

看如下的**:

#escape x as x?html>

first name:$

last name:$

maiden name:$

上面的**等同于:

first name:$

last name:$

maiden name:$

freemarker常见语法大全

elseif condition3 else boolean类型的空值判断 空值判断可以写成 if 注意 为变量的渲染显示,而 为定义等操作符的定义。switch switch value case refvalue1 break case refvalue2 break case refvalue...

FreeMarker基本语法

一 直接指定值。使用直接指定值语法让freemarker直接输出插值中的值,而不是输出变量值。直接指定值可以是字符串,数值,布尔值,集合和map对象。1,字符串。直接指定字符串值使用单引号或双引号限定,如果字符串值中包含特殊字符需要转义,看下面的例子 输出结果是 我的文件保存在c 盘。我名字是 an...

高级常见语法

限定形词尾 和依存名词 以及助词 的连用形。表示 既然 的意思。但这种 既然 所表示的是后面的建议更好。如 1.既然要买就买好的吧。既然要住下来,最好还是住那家宾馆 既然到处都一样,那何必到别处去呢?表示 除非 的意思。虽然对前面的情况不是很清楚,但不会发生后面的事情。后面一般都是否定意思的内容。如...