freemarker内置函数

合集下载

freemarker基础语法

freemarker基础语法

FreeMarker 是一个用Java 语言编写的模板引擎,它是一个用于生成输出文本的通用工具。

其主要应用于Web 开发,能够处理各种复杂的数据结构,并能够与各种数据库进行交互。

FreeMarker 的基础语法主要包括以下几个方面:1. 变量:在FreeMarker 中,你可以用`${...}` 来定义一个变量。

例如,`${name}` 就是一个变量,表示名字。

2. 数据结构:FreeMarker 支持各种复杂的数据结构,包括列表(list)、哈希表(hash table)、方法(method)等。

你可以用`#list`, `#set`, `#if`, `#else`, `#elseif`, `#switch`, `#case`, `#default` 等指令来创建和控制这些数据结构。

3. 函数:你可以用`#function` 定义自己的函数,然后用`#use` 或`#import` 引入其他FreeMarker 模板中定义的函数。

函数可以接受参数,并返回一个值。

4. 指令:FreeMarker 有很多内置的指令,如`#include`(包含其他文件)、`#import`(导入其他文件定义的函数和宏)、`#use`(使用其他文件定义的模板函数)等。

5. 注释和注释块:你可以用`#comment` 来创建注释,用`#end` 来结束注释块。

6. 宏:你可以用`#macro` 来定义一个宏,然后用`#end` 来结束宏定义。

宏可以接受参数,并返回一个值。

7. 自定义指令:你也可以创建自己的指令,用`#defining` 来定义一个全局的自定义指令,用`#end` 来结束指令定义。

自定义指令可以在模板中的任何位置使用。

8. 表达式:FreeMarker 支持各种表达式,包括算术表达式、比较表达式、逻辑表达式、字符串表达式等。

以上就是FreeMarker 的基础语法,更详细的信息可以查阅FreeMarker 的官方文档或相关教程。

freemarker 模板引擎语法

freemarker 模板引擎语法

Freemarker模板引擎是一种用于生成文本输出的模板引擎,它使用基于模板的方式来构建文档,支持条件判断、循环、宏定义等功能,适用于生成HTML、XML、JSON等文档,同时也可以用于邮件、配置文件等文本文件的生成。

Freemarker模板引擎的语法简单易懂,但功能强大,本文将对其语法进行详细介绍。

一、输出Freemarker模板引擎使用${...}语法来输出变量或表达式的值。

例如:```Hello, ${user}!```这段代码将会输出"Hello, "后跟变量user的值。

二、if语句Freemarker模板引擎支持使用if语句进行条件判断。

语法如下:```<#if condition>...<#elseif condition>...<#else>...</#if>其中,condition为一个布尔表达式。

当condition成立时,“...”内的内容会被输出。

三、list循环Freemarker模板引擎支持使用list进行循环。

语法如下:```<#list items as item>...</#list>```其中,items为一个列表,item为列表中的每个元素。

循环内的内容将会被item依次赋值后输出。

四、macro宏定义Freemarker模板引擎支持使用macro来定义宏。

语法如下:```<#macro myMacro param1 param2>...</#macro>```其中,myMacro为宏的名称,param1和param2为宏的参数。

定义完成后,可以通过<myMacro ...>来调用宏。

五、include包含文件Freemarker模板引擎支持使用include来包含其他文件。

语法如下:```<#include "header.ftl">...<#include "footer.ftl">```这段代码会将header.ftl和footer.ftl中的内容包含到当前文件中。

freemarker的标签语法

freemarker的标签语法

一、基本标签1. `<#assign>`:用于声明变量,并为其赋值。

语法:```html<#assign var_name=value>```示例:```html<#assign user="张三">${user}```输出:```张三```2. `<#if>`:用于条件判断,根据条件表达式返回不同的内容。

语法:```html<#if condition><!-- 条件为真时执行的代码 --><#else><!-- 条件为假时执行的代码 --></#if>```示例:```html<#if user=="张三">欢迎回来,${user}!<#else>欢迎光临,${user}!</#if>```输出:```欢迎回来,张三!```3. `<#list>`:用于遍历集合,如数组、列表、Map等。

语法:```html<#list collection as item><!-- 循环体 --></#list>```示例:```html<#list fruits as fruit>${fruit}</#list>```输出:```苹果香蕉橙子```4. `<#foreach>`:与<#list>类似,用于遍历集合,但可以访问集合中每个元素的索引。

语法:```html<#foreach item in collection><!-- 循环体 --></#foreach>```示例:```html<#foreach fruit in fruits>第${fruit_index}个水果:${fruit}</#foreach>```输出:第1个水果:苹果第2个水果:香蕉第3个水果:橙子```5. `<#macro>`:用于定义可重用的模板片段,类似于函数。

FreeMarker

FreeMarker
\t;Tab(u0009)
\b;退格键(u0008)
\f;Form feed(u000C)
\l;<
\g;>
\a;&
\{;{
\xCode;直接通过4位的16进制数来指定Unicode码,输出该unicode码对应的字符.
FreeMarker的常用指令
<#noparse>...</#noparse>
escape指令
导致body区的插值都会被自动加上escape表达式,但不会影响字符串内的插值,
只会影响到body内出现的插值,使用escape指令的语法格式如下:
<#escape identifier as expression>...
自定义指令如果之间没有嵌套内容,则可使用<@ ... />
表达式
当需要给插值或指令参数提供值时,可以使用变量或表达式
插值:${expression}
标签指令:<#if expression>
直接给定值:
字符串
数字
布尔值
序列:[1,3,5,7],1~100
哈希表:{"name":"allen","age":24}
检测不存在的值:name??或者()??
运算符的优先级
FreeMarker中的运算符优先级如下(由高到低排列):
1,一元运算符:!
2,内建函数:?
3,乘除法:*, / , %
4,加减法:- , +
5,比较:> , < , >= , <= (lt , lte , gt , gte)

framemaker 语法

framemaker 语法

framemaker 语法FreeMarker是一款用Java语言编写的模板引擎,用于生成各种文本,如HTML、XML、Java等。

以下是FreeMarker语法的一些示例:1.变量替换:2.freemarker复制代码<#assign name="John">Hello ${name}!1.控制结构:2.freemarker复制代码<#if name == "John">Hello John!<#else>Hello ${name}!</#if>1.宏定义和调用:2.freemarker复制代码<#macro greet person><font size="+2">Hello ${person}!</font></#macro><@greet person="John"/>1.列表和迭代:2.freemarker复制代码<#list items as item>${item}</#list>1.内置函数:2.freemarker复制代码<#function formatDate date><#return date?string("yyyy-MM-dd HH:mm:ss")></#function>${formatDate(date)}这些只是FreeMarker语法的一些基本示例,FreeMarker还支持更复杂的表达式和控制结构。

freemarker 常用内置函数

freemarker 常用内置函数

freemarker 常用内置函数/文章分类:Java编程1。

在模板里边变量引用使用:${a}, 如果给<#macro aa tmp=a > 这不需要$,可以给模板注入一些自定义的函数,这个比较常用.=======================接下来将网上一些内置函数记录下来一、Sequence的内置函数1.sequence?first 返回sequence的第一个值。

2.sequence?last 返回sequence的最后一个值。

3.sequence?reverse 将sequence的现有顺序反转,即倒序排序4.sequence?size 返回sequence的大小5.sequence?sort 将sequence中的对象转化为字符串后顺序排序6.sequence?sort_by(value) 按sequence中对象的属性value进行排序注意:Sequence不能为null二、Hash的内置函数1.hash?keys 返回hash里的所有key,返回结果为sequence2.hash?values 返回hash里的所有value,返回结果为sequence三、操作字符串函数1.substring(start,end)从一个字符串中截取子串start:截取子串开始的索引,start必须大于等于0,小于等于endend: 截取子串的长度,end必须大于等于0,小于等于字符串长度,如果省略该参数,默认为字符串长度。

2.cap_first 将字符串中的第一个单词的首字母变为大写。

3.uncap_first将字符串中的第一个单词的首字母变为小写。

4.capitalize将字符串中的所有单词的首字母变为大写5.date,time,datetime将字符串转换为日期注意:如果指定的字符串格式不正确将引发错误6.ends_with 判断某个字符串是否由某个子串结尾,返回布尔值注意:布尔值必须转换为字符串才能输出7.html 用于将字符串中的<、>、&和"替换为对应得<>&quot:&amp8.index_of(substring,start)在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1。

freemarker菜鸟教程

freemarker菜鸟教程

freemarker菜鸟教程Freemarker菜鸟教程1. 介绍Freemarker是一种模板引擎,用于将数据模型与文本模板合并生成输出内容。

它提供了多种功能,使开发人员能够轻松地生成动态网页、邮件、XML文件等。

2. Freemarker的优点- 简洁易学:Freemarker使用简单的语法和模板指令,易于学习和使用。

即使是没有编程经验的初学者也可以快速上手。

- 强大灵活:Freemarker提供了丰富的模板指令和表达式,可以满足各种动态内容生成的需求。

- 高性能:Freemarker运行速度快,生成的输出内容效率高,非常适合用于大规模的数据处理和生成。

3. Freemarker基本语法- 插值:使用${}来插入变量或表达式的值。

```html<p>欢迎来到Freemarker教程,${username}!</p>```- 条件判断:使用if-else指令进行条件判断。

```html<#if age < 18><p>您是未成年人。

</p><#else><p>您已成年。

</p></#if>```- 循环:使用list指令实现列表的循环遍历。

```html<ul><#list users as user><li>${}</li></#list></ul>```- 宏定义:使用#macro指令定义宏,可以实现代码的重复使用。

```html<#macro hello /><h1>Hello, ${name}!</h1></#macro>```4. Freemarker内置指令- include指令:用于引入其他模板文件。

```html<#include \。

freemaker语法

freemaker语法

freemaker语法Freemarker是一种模板引擎,可以用于生成动态内容的模板。

它的语法相对简洁易懂,以下是Freemarker的一些常用语法:1. 变量定义和输出:- 定义变量:`<#assign variableName = value>`- 输出变量:`${variableName}`2. 条件判断:- if语句:`<#if condition>...</#if>`- if-else语句:`<#ifcondition>...</#else>...</#if>`- if-elseif-else语句:`<#ifcondition1>...</#elseifcondition2>...</#else>...</#if>`3. 循环:- foreach循环:`<#list collection as item>...</#list>`- 遍历索引:`<#list collection as item index>...</#list>`4. 宏定义和调用:- 定义宏:`<#macro macroName parameter1 parameter2>...</#macro>`- 调用宏:`<@macroName parameter1=xxx parameter2=yyy />`5. 内建函数:- 字符串处理:`<#assign result =myString?substring(0, 5)>`- 数字格式化:`${myNumber?string("0.00")}`- 集合操作:`${myList?size}`- 日期处理:`${myDate?string("yyyy-MM-dd")}`6. 引入其他模板:- 引入模板:`<#include "otherTemplate.ftl">`7. 注释:- 单行注释:`<#-- This is a comment -->`- 多行注释:`<#-- This is amulti-line comment -->`这只是Freemarker语法的一小部分,还有很多其他功能和语法可以用于更复杂的模板生成。

Freemarker常用内置函数使用说明

Freemarker常用内置函数使用说明

FreeMark内建函数使用说明在我们应用Freemarker过程中,经常会操作例如字符串,数字,集合等,却不清楚Freemrker 有没有类似于Java一样有相关的类及方法。

在本文当中,我将向大家详细的介绍Freemarke 的内置函数及用法,以便能帮助大家更熟练的应用Freemarker完成项目开发。

一、Sequence的内置函数1.sequence?first 返回sequence的第一个值。

2.sequence?last 返回sequence的最后一个值。

3.sequence?reverse 将sequence的现有顺序反转,即倒序排序4.sequence?size 返回sequence的大小5.sequence?sort 将sequence中的对象转化为字符串后顺序排序6.sequence?sort_by(value) 按sequence中对象的属性value进行排序注意:Sequence不能为null二、Hash的内置函数1.hash?keys 返回hash里的所有key,返回结果为sequence2.hash?values 返回hash里的所有value,返回结果为sequence三、操作字符串函数1.substring(start,end)从一个字符串中截取子串start:截取子串开始的索引,start必须大于等于0,小于等于endend: 截取子串的长度,end必须大于等于0,小于等于字符串长度,如果省略该参数,默认为字符串长度。

2.cap_first 将字符串中的第一个单词的首字母变为大写。

3.uncap_first将字符串中的第一个单词的首字母变为小写。

4.capitalize将字符串中的所有单词的首字母变为大写5.date,time,datetime将字符串转换为日期注意:如果指定的字符串格式不正确将引发错误6.ends_with 判断某个字符串是否由某个子串结尾,返回布尔值注意:布尔值必须转换为字符串才能输出7.html 用于将字符串中的<、>、&和"替换为对应得<>&quot:&amp8.index_of(substring,start)在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1。

freemark的replace正则

freemark的replace正则

freemark的replace正则(实用版)目录1.Freemarker 简介2.Replace 正则表达式的作用3.Replace 正则表达式的使用方法4.Replace 正则表达式的示例正文1.Freemarker 简介Freemarker 是一个基于模板的 Java 代码生成器,它可以使用简单的模板语言来生成 Java 代码。

在 Freemarker 中,可以使用正则表达式进行字符串替换,从而实现复杂的逻辑处理。

2.Replace 正则表达式的作用Replace 正则表达式是 Freemarker 中的一个内置函数,用于在字符串中查找与正则表达式匹配的内容,并将匹配的内容替换为指定的替换字符串。

3.Replace 正则表达式的使用方法在 Freemarker 模板中,可以使用`${string.replace(regExp, replacement)}`来调用 Replace 正则表达式函数。

其中,`string`是要进行替换操作的字符串,`regExp`是正则表达式,`replacement`是替换字符串。

4.Replace 正则表达式的示例下面是一个使用 Replace 正则表达式的 Freemarker 模板示例:```${name.replace("d+", "NUM")}你好,${name.replace("d+", "NUM")}!```在这个示例中,`${name.replace("d+", "NUM")}`表示将字符串`name`中的所有数字替换为`NUM`。

因此,输出结果为:```你好,NUM!```通过这个示例,我们可以看到如何在 Freemarker 模板中使用Replace 正则表达式函数来实现字符串替换。

freemarker list 判空 默认值

freemarker list 判空 默认值

freemarker list 判空默认值
在Freemarker模板中,可以使用一些内置函数来判断List是否为空,并提供默认值。

以下是使用Freemarker内置函数的示例:
1. 使用?size函数判断List是否为空:
```freemarker
<#if myList?size == 0>
List为空
<#else>
List不为空
</#if>
```
2. 使用?has_content函数判断List是否为空:
```freemarker
<#if myList?has_content>
List不为空
<#else>
List为空
</#if>
```
3. 使用?default函数设置List的默认值:
```freemarker
<#assign myList = myNonNullList?default([])>
```
上述示例中,如果`myNonNullList`是一个非空的List,那么`myList`将被赋值为`myNonNullList`。

但如果`myNonNullList`为空,那么`myList`将被赋值为一个空的List。

通过使用上述内置函数,您可以判断List是否为空,并提供默认值来处理可能的空值情况。

请根据您的具体需求选择适合的函数和处理逻辑。

freemarkerround函数

freemarkerround函数

freemarkerround函数Freemarker是一种模板引擎,用于将数据模型与模板相结合生成输出。

在Freemarker中,提供了一些内置函数来对数据进行处理和转换,其中之一就是round函数。

round函数用于对数字进行四舍五入取整。

它可以接受一个参数,即要进行取整操作的数字。

下面是round函数的语法:```${round(number)}```其中,number是一个浮点数或一个可以解析为浮点数的字符串。

round函数的返回值是一个整数,它是进行四舍五入取整后的结果。

如果传入的是一个整数,则返回的还是一个整数,不会发生任何变化。

下面是一些示例,演示了round函数的用法和结果:```${round(3.14)} // 输出:3${round(3.74)} // 输出:4${round(4.5)} // 输出:5${round("3.14")} // 输出:3${round("3.74")} // 输出:4${round(3)} // 输出:3```如果要进行更精确的四舍五入,可以传入第二个参数,表示要保留的小数位数。

下面是round函数加上小数位数参数的语法和示例:```${round(number, decimalPlaces)}```其中,decimalPlaces是一个整数,表示要保留的小数位数。

下面是一些带有小数位数参数的示例:```${round(3.14, 0)} // 输出:3```在使用round函数时,需要注意以下几点:1. round函数只能对数字进行四舍五入,如果传入的是非数字参数,会抛出异常。

2. round函数的返回值是一个整数,不是一个浮点数。

3.如果要保留小数位数,小数位数参数必须是一个整数,不能是一个浮点数或其他非整数类型的值。

4.如果传入的数字是一个负数,它的四舍五入结果会以绝对值大的方向靠近零。

例如,-3.74会被四舍五入为-4在实际应用中,可以使用round函数来对数字进行取整操作,尤其是在处理金额、百分比和其他需要精确显示的数据时非常有用。

freemarker indexof 字符串截取

freemarker indexof 字符串截取

在FreeMarker中,没有直接提供indexOf和substring函数。

但是,你可以使用其他方法来实现类似的功能。

1. 字符串截取:
freemarker复制代码${substring(string, start, end)}
其中start是截取的起始位置,end是截取的结束位置。

如果需要截取从某个位置到字符串的末尾,可以将end设置为-1。

例如,要截取字符串"Hello, World!"从第6个字符到末尾,可以这样写:
freemarker复制代码${substring("Hello, World!", 6)}
2. 字符串查找:
在FreeMarker中没有直接提供indexOf函数,但你可以使用以下方法来实现类似的功能:freemarker复制代码${string?index_of(substring)}
其中string是原始字符串,substring是要查找的子字符串。

这个表达式会返回子字符串在原始字符串中的索引位置,如果未找到则返回-1。

例如,要查找字符串"Hello, World!"中"World"的索引位置,可以这样写:
freemarker复制代码${"Hello, World!"?index_of("World")}
请注意,这些方法都是FreeMarker的内置函数,你可以在模板中使用它们来处理字符串。

freemaker中int类型字段左侧位数不够补0

freemaker中int类型字段左侧位数不够补0

freemaker中int类型字段左侧位数不够补0
在Freemarker中,你可以使用内置的字符串函数来实现这个功能。

你需要先将整数转为字符串,然后使用`leftpad`函数来确保它有足够的位数。

下面是一个例子:
```freemarker
<#assign num=123>
<#assign strNum=num?string.padLeft(2,'0')> ${strNum}
```
在这个例子中,数字`123`被转换为字符串`"123"`,然后使用`padLeft`函数添加足够的'0'直到字符串长度为2。

所以输出将是`"0123"`。

请注意,你需要确保数字的位数总是固定的,否则`padLeft`函数可能不会按照你期望的方式工作。

例如,如果你尝试对数字`12345`使用这个方法,结果将是`"012345"`,而不是`"123450"`。

如果你需要后者,你可能需要写一个自定义的Freemarker函数来处理这种情况。

freemarker1一些内建函数和用法

freemarker1一些内建函数和用法

freemarker1⼀些内建函数和⽤法${" green mouse"?cap_first} --> Green mouse //字符串中的第⼀个单词的⾸字母⼤写${"ABCDF"?lower_case} --> abcdf //字符串⼩写形式[${"a"?left_pad(5)}] --> [ a] //距左边如果它仅仅⽤1个参数,将在字符串的开始插⼊空⽩,知道整个串的长度达到参数指定的值. 如果字符串长度达到或者超过指定的长度,就什么都不做.[${"a"?left_pad(8,".oO")}] -->[.oO.oO.a]//第⼆个参数也可以是长度⽐1⼤的字符串,这个字符串会周期性的插⼊.<#if "piceous"?contains("ice")>It contains "ice"<#/if> --> It contains "ice" //contains 包含${"aaaaa"?repalce("aaa","XX")} --> XXaa //在元字符串中,⽤另外⼀个字符串来替换原字符串中出现它的部分不处理词的边界<#assign x= 's/b c'> ${x?url} --> a%2Fb%20c //通常引⽤的属性值,⽤普通引号("")包括,⽽不是单引号(''),因为单引号是不被URL转义的,<#list "someMOOtestMOOtext"?split("MOO" as x)>-${x}</#list> --> -some -test - text //split 分割,(${" green mouse "}?trim) --> (green mouse) //trim 去掉字符串⾸尾的空格<替换为&lt;>替换为&gt;&替换为&amp;"替换为&quot;'替换为&#39学习是枯燥的.。

freemarker(FTL)常见语法大全

freemarker(FTL)常见语法大全

freemarker(FTL)常见语法⼤全FreeMarker的插值有如下两种类型:1,通⽤插值${expr};2,数字格式化插值:#{expr}或#{expr;format} ${?if_exists } //⽤于判断如果存在,就输出这个值${?default(‘xxx’)}//默认值xxx${!"xxx"}//默认值xxx${book.date?string('yyyy-MM-dd')} //⽇期格式${book?string.number} 20 //三种不同的数字格式${book?string.currency}--<#-- $20.00 -->${book?string.percent}—<#-- 20% --><#assign foo=ture /> //声明变量,插⼊布尔值进⾏显⽰${foo?string("yes","no")} <#-- 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>...</#switch>快速定义int区间的集合<#assign l=0..100/> //注意不需要[]3:循环读取集合: 注意/的使⽤<#list student as stu>${stu}<br/></#list>与jstl循环类似,也可以访问循环的状态item_index:当前变量的索引值item_has_next:是否存在下⼀个对象其中item名称为as后的变量名,如stu集合长度判断<#if student?size != 0></#if> 判断=的时候,注意只要⼀个=符号,⽽不是==宏/模板初步了解: 使⽤更像⼀个闭包closure,可以定义后,在脚本中任意地⽅引⽤,并原地起作⽤<#macro greet><font size="+2">Hello Joe!</font></#macro>使⽤的⽅式为:<@greet></@greet> //同xml可以简写成<@greet/>宏的参数定义,类似js,在宏名后带参数进⾏传递定义<#macro greet person color>${person}</#macro>调⽤带参数时,注意使⽤类似XML的属性格式进⾏传递,不需要关⼼顺序问题<@greet person="Fred" color="black"/>参数默认值定义,如果没有,就必须要求传递完整的参数列表<#macro greet person color="black"><font size="+2" color="${color}">Hello ${person}!</font></#macro>使⽤xml的嵌套内容进⾏传递宏调⽤,关键标签 <#nested><#macro border><table border=4 cellspacing=0 cellpadding=4><tr><td><#nested></tr></td></table></#macro>调⽤时:<@border>The bordered text</@border><#nested> 标签可以在宏中多次调⽤,也可以将多个宏组合进⾏嵌套for循环的精简版:<#list 1..count as x></#list>宏的循环变量,配合嵌套标签进⾏参数传递,<#macro repeat count><#list 1..count as x><#nested x, x/2, x==count> //这⾥的三个参数,将会传递到嵌套内容中</#list></#macro><@repeat count=4 ; c, halfc, last>${c}. ${halfc}<#if last> Last!</#if> //这⾥的内容由macro中的<#nested>进⾏参数的传递,传递的数量任意,当注意需要宏接受这些</@repeat>上述还需要注意;的使⽤参数的数量是可变的,并不要求全部都有,但是效果不同在模板中定义变量在模板中定义的变量有三种类型:plain变量:可以在模板的任何地⽅访问,包括使⽤include指令插⼊的模板,使⽤assign指令创建和替换。

Freemarker和Velocity介绍最新版

Freemarker和Velocity介绍最新版

Freemarker与Velocity1Freemarker1.1Freemarker简介FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出,仅是利用模板加上数据生成文本页面,即是由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据,并可以在模板中使用JSP 标签。

FreeMarker与Web容器无关,即在web运行时,它并不知道Servlet或Http; FreeMarker同样也可以用于非Web应用环境。

FreeMarker不仅可以用作表现层的实现技术,用来生成HTML Web页面,而且还可以用于生成XML,JSP或Java 等。

Freemarker是免费的。

1.2Freemarker特性具有一般通用的功能:能够生成各种任意格式的文本,如HTML,XML,RTF(多文本格式),Java源代码等等;易于嵌入到产品中,是轻量级的,不需要servlet环境,不依赖javax.servlet.classes;可插入的模板读取器(插件式模板载入器),即可以从任意的源码读取任意的模板,如本地本件、数据库等等;可以做任意你想生成的文本,存储为本地文件,可以用来发送Email或返回WEB浏览器;强大的模板语言:完整的指令,如include,if/elseif/else,loop;在模板中创建和改变变量;几乎在任何地方都可以是使用复杂表达式来指定值;支持宏指令;字符串操作,如concateration,sub-string,uppercase,capitalize,escaping,等等;十进制数学运算;读取数组和相关的数组元素;可以自己添加特殊的计算方法;命名的宏有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突;命名的宏,可以具有位置参数和嵌套内容;通用的数据模型:FreeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示;可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等),使模板开发者直接使用方法,不受细节的打扰;为web准备:在模板语言中内建处理典型web相关任务(如HTML转义)的结构;能够集成到Model2 web应用框架中作为JSP的替代;支持JSP标记库;为MVC模式设计,即分离可视化设计和应用程序逻辑,分离页面设计员和程序员;智能的国际化和本地化:字符集智能化(内部使用UNICODE);数字格式本地化敏感;日期和时间格式本地化敏感;非US字符集可以用作标识(如变量名);多种不同语言的相同模板;强大的XML处理能力:<#recurse> 和<#visit>指令(2.3版本)用于递归遍历XML树;在模板中清楚和直接的访问XML对象模型;2Velocity2.1Velocity简介Velocity是一个基于JA V A的模板引擎(template engine:模板引擎的作用就是取得数据并加以处理,最后显示出数据)。

java freemarker 语法

java freemarker 语法

java freemarker 语法Java Freemarker语法简介概述Freemarker是一种模板引擎,它允许开发人员以更简洁的方式生成动态内容。

它与Java语言紧密集成,可以轻松地将数据与模板相结合,生成最终的输出。

本文将介绍Freemarker的基本语法和用法。

模板在使用Freemarker时,我们首先需要创建一个模板文件。

模板文件是一个包含Freemarker语法的文本文件,它定义了要生成的输出的结构和内容。

模板文件通常包含普通文本和Freemarker标记。

Freemarker标记Freemarker标记用于控制模板的逻辑和数据插值。

以下是一些常用的Freemarker标记:1. 变量插值Freemarker使用${}来插入变量值。

例如,${}将插入变量user的name属性的值。

2. 条件语句Freemarker提供了if-else和switch语句来实现条件逻辑。

例如:<#if condition><!-- 条件为真时执行的代码 --><#elseif condition><!-- 其他条件为真时执行的代码 --><#else><!-- 所有条件都不满足时执行的代码 --></#if>3. 循环语句Freemarker支持多种类型的循环,包括for-each循环和while循环。

例如:<#list users as user><!-- 遍历users列表中的每个元素 -->${}</#list>4. 定义宏Freemarker中的宏类似于函数,可以在模板中定义和调用。

例如:<#macro helloWorld>Hello World!</#macro><@helloWorld/>数据模型在生成输出之前,我们需要将数据传递给模板。

freemarker中hidden用法 -回复

freemarker中hidden用法 -回复

freemarker中hidden用法-回复(Freemarker中hidden用法)Freemarker是一种模板引擎,广泛应用于Java项目中。

它允许开发人员将动态内容嵌入到静态模板中,提供了丰富的标签和指令来处理数据。

其中之一就是`hidden`指令,它用于在HTML表单中隐藏某些字段或参数。

本文将详细介绍Freemarker中`hidden`指令的用法,包括如何在模板中使用它以及它在Web开发中的实际应用。

一、介绍Freemarker的hidden指令`hidden`指令是Freemarker中的一个内置指令,它可以在生成的HTML 表单中创建一个隐藏字段。

隐藏字段可以用于在表单提交时传递一些额外的参数,而这些参数对于用户来说是不可见的。

这些参数可以是一些敏感数据、验证信息或其他需要在后台处理的数据。

二、在模板中使用hidden指令在模板中使用`hidden`指令非常简单,只需按照以下步骤进行操作:1. 添加Freemarker命名空间首先,需要在模板文件的开头添加Freemarker命名空间的声明。

以HTML 为例,可以使用以下代码在`<head>`标签中添加命名空间:<head><#import "/spring.ftl" as spring>...</head>这里使用的是`spring.ftl`命名空间,它是Freemarker和Spring框架集成时提供的一个常用命名空间。

如果不使用Spring框架,可以不导入这个命名空间。

2. 定义隐藏字段一旦添加了命名空间,就可以在模板中使用`hidden`指令了。

以下是一个示例:<form action="/submit" method="post">...<input type="text" name="username"><input type="password" name="password"><@spring.hidden "_csrf" /><button type="submit">提交</button></form>在上面的示例中,我们使用`<@spring.hidden>`标签创建了一个隐藏字段`_csrf`。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

freemarker内置函数
博客分类:
freemarker
freemarker
一、Sequence的内置函数
1、sequence?first返回sequence的第一个值。

2、sequence?first返回sequence的第一个值。

3、sequence?last 返回sequence的最后一个值。

4、sequence?reverse将sequence的现有顺序反转,即倒序排序
5、sequence?size返回sequence的大小
6、sequence?sort将sequence中的对象转化为字符串后顺序排序
7、sequence?sort_by(value) 按sequence中对象的属性value进行排序
二、Hash的内置函数
1、hash?keys 返回hash里的所有key,返回结果为sequence
2、hash?values 返回hash里的所有value,返回结果为sequence
例如:
<#assign user={“name”:“hailang”, “sex”:“man”}>
<#assign keys=user?keys>
<#list keys as key>
${key}=${user[key]}
</#list>
三、操作字符串函数
1、substring(start,end)从一个字符串中截取子串
start:截取子串开始的索引,start必须大于等于0,小于等于end
end: 截取子串的长度,end必须大于等于0,小于等于字符串长度,如果省略该参数,默认为字符串长度。

例子:
${‘str’?substring(0)}à结果为str
${‘str’?substring(1)}à结果为tr
${‘str’?substring(2)}à结果为r
${‘str’?substring(3)}à结果为
${‘str’?substring(0,0)}à结果为
${‘str’?substring(0,1)}à结果为s
${‘str’?substring(0,2)}à结果为st
${‘str’?substring(0,3)}à结果为str
2、cap_first 将字符串中的第一个单词的首字母变为大写。

${‘str’?cap_first}à结果为Str
3、uncap_first将字符串中的第一个单词的首字母变为小写。

${‘Str’?cap_first}à结果为str
4、 capitalize将字符串中的所有单词的首字母变为大写
${‘str’?capitalize}à结果为STR
5、 date,time,datetime将字符串转换为日期
例如:
<#assign date1=”2009-10-12”?date(“yyyy-MM-dd”)>
<#assign date2=”9:28:20”?time(“HH:mm:ss”)>
<#assign date3=” 2009-10-12 9:28:20”?time(“HH:mm:ss”)>
${date1}à结果为2009-10-12
${date2}à结果为9:28:20
${date3}à结果为2009-10-12 9:28:20
注意:如果指定的字符串格式不正确将引发错误。

6、ends_with 判断某个字符串是否由某个子串结尾,返回布尔值。

${“string”?ends_with(“ing”)?string} 返回结果为true
注意:布尔值必须转换为字符串才能输出
7、html 用于将字符串中的<、>、&和“替换为对应得&lt;&gt;&quot:&amp
8、index_of(substring,start)在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1。

Start参数用于指定从字符串的那个索引处开始搜索,start为数字值。

如果start大于字符串长度,则start取值等于字符串长度,如果start小于0,则start取值为0。

${“string”?index_of(“in”) à结果为3
${“string”?index_of(“ab”) à结果为-1
9、length返回字符串的长度${“string”?length}à结果为6
10、lower_case将字符串转为小写
${“STRING”?lower_case}à结果为string
11、upper_case将字符串转为大写
${“string”?upper_case}à结果为STRING
12、contains 判断字符中是否包含某个子串。

返回布尔值
${“string”?contains(“ing”)?string} à结果为true
注意:布尔值必须转换为字符串才能输出
13、number将字符串转换为数字
${“111.11”?number}à结果为111.11
14、replace用于将字符串中的一部分从左到右替换为另外的字符串。

${“strabg”?replace(“ab”,”in”)} à结果为string
15、split使用指定的分隔符将一个字符串拆分为一组字符串
<#list “This|is|split”?split(“|”) as s>
${s}
</#list>
结果为:
This
is
split
16、 trim 删除字符串首尾空格${“ String ”?trim} à结果为String
四、操作数字
1、c 用于将数字转换为字符串
${123?c} à结果为123
2、string用于将数字转换为字符串
Freemarker中预订义了三种数字格式:number,currency(货币)和percent(百分比)其中number为默认的数字格式转换
例如:
<#assign tempNum=20>
${tempNum}
${tempNum?string.number}或${tempNum?string(“number”)} à结果为20 ${tempNum?string.currency}或${tempNum?string(“currency”)} à结果为¥20.00
${tempNum?string. percent}或${tempNum?string(“percent”)} à结果为2,000%
五、操作布尔值
string 用于将布尔值转换为字符串输出
true转为“true”,false转换为“false”
foo?string(“yes”,”no”)如果布尔值是true,那么返回“yes”,否则返回no。

相关文档
最新文档