`

FreeMarker

阅读更多

jspHTML页面中嵌入java脚本代码不同,FreeMarker不支持脚本代码。

 

1FreeMarker基本对象类型:

保存单值的变量(size,price,)称为scalar(标量).        ${root.size}

另外一种变量类型是:sequence(序列).java中可以用java.util.List来构建序列。

<#list [“one”,”two”]+[“three”,”four”] as user>        序列的连接用+

       ${user}

</#list>

 

方法变量

方法变量基于给出的参数进行计算,然后返回一个结果。

例:<#function avg  x  y>

              <#return  (x+y)/2>

       <#function>

调用方法:${avg(3,5)}

 

宏变量:

宏变量可以被用户定义的指令。

 

Macro指令:

Macro指令在当前名称空间中创建一个宏变量,你可以把宏变量看成是java没有返回值的方法。

没有参数的宏:

<#macro test>

Test text

</#macro>

调用方法:<@test/>

带有参数的宏:

<#macro test  foo  bar  baaz>

Test text ,and the params: ${foo},${bar},${baaz}

</#macro>

调用宏:<@test foo=”a”  bar=”b”  baaz=5*5-2/>

 

Nested指令:

在宏定义体内,nested指令调用了几次,在用户定义指令开始标签和结束标签之间的内容就会被执行几次。

<#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>

         </@repeat>

 

Return指令:

使用return 指令,你可以在任何地主跳出宏定义体。例如:

<#macro test>

Test text

<#return>

Will not be printed.

</#macro>

显示为:Test text

 

2.指令:

1if/elseif/else 指令

       <#if  a==3>3

       <#elseif a==5>5

       <#else>8

       </#if>

2switch/case/default/break指令:

       <#switch value>

              <#case 1>1 <#break>

              <#case 2>2 <#break>

              <#default>3

       <#switch>

3list/break指令:

       <#list  sequence as item>

      

       </#list>

       Item_index:表示当前迭代项在整个循环中的索引。

       Item_has_next: 布尔值,用于判断是否是最后一项。

4include指令:

       Include 指令用于在模板中插入其他文件的内容。

       <#include “/common/copyright.ftl”  encoding=”GBK”>

5import指令:

       Import指令用于导入一个库。所谓库,就是在一个模板中使用assignmacro指令创建的可重用的变量的集合。

       Footer.ftl内容:

       <#assign  mail=”zhangsan@sunxin.org”>

       <#macro test>

       Test

       </#macro>

 

       <#import  “/lib/footer.ftl”  as my>

       ${my.mail}

       <@my.test/>

6assign指令:

       Assign指令用于创建一个新的变量,或者替换一个现在的变量。

       <#assign val=”123”/>

7global指令:

       Global指令创建的是全局变量,可以在所有的名称空间中使用。

8local指令:

       Local指令用于创建或替换局部变量。

       <#setting locale=”en_US”>

       Locale:指定语言环境.

       Number_format:指定将数字转换为字符串时使用的数字格式。可以使用预定义的值:number,currency,percent.

       Boolean_format:

       Date_format,time_format,datetime_format:指定日期转换格式。

       Time_zone:

      

9noparse指令:

       Noparse指令用于禁止对ftl的解析。

10escapenoescape指令:

       自动添加转义的表达式。

       <#escape  x as x?html>

              First name: ${firstname}

              Last name: ${lastname}

       </#escape>

       上迷等价于:

       First name: ${firstname?html}

       Last name: ${lastname?html}

 

3Freemarker内置函数:

       操作字符串:

1substring

       截取字符串:${‘abc’?substring(2)}        ${‘abc’?substring(0,2)}

2cap_first

       将第一个单词的首字母转换为大写形式。    ${“green mouse”?cap_first}

3uncap_first

       将第一个单词的首字母转换为小写。

4length

       用于返回字符串中字符的数量。  ${“zhangsan”?length}

5capitalize

       将所有单词的首字母都转换成大写。

6date,timedatetime

       <#setting locale=”zh_CN”>

       <#assign test1=”1998-10-22”?date(“yyyy-MM-dd”)

7ends_with

       用于判断一个字符串是否由某个子串结尾,返回布尔值。

       ${“redhead”?ends_with(“head”)?string}

       布尔值不能直接输出,需要转换为字符串输出。

8html

       用于将字符串中的<>&替换为它们对应的实体引用。

       ${“<>&\””?html}    显示:&lt;&gt;&quot;&amp;

9index_of

       用于在一个字符串中查找某个子串,并返回找到的子串的第一个字符的索引。如果没有找到,则返回-1.

10j_string

       使用java语言字符串字面量的转义规则对字符串进行转义。

11js_string

       使用javascript语言中的字符串字面量的转义规则对字符串进行转义。

12last_index_of

       查找子串,返回最右边的子串的第一个字符的索引。

13lower_case

       用于将字符串转换成小写。

14upper_case

       用于将字符串转换为大写。

15left_pad

       指定字符串的输出长度,左边补空格

       [${“abc”?left_pad(5)}]

       [${“abc”?left_pad(5,”*”)}]

(16)right_pad

(17)contains

       用于判断一个字符串中是否包含了某个子串。该函数返回布尔值。

       <#if  “piceous”?contains(“ice”)> test</#if>

(18)number

       用于将字符串转换为数字

       ${“123.55”?number}

(19)replace

       用于将字符串中的一部分替换为另外的字符串。

       ${“this is a car.”?replace(“car”,”bus”)}

(20)url

       url对字符串使用 URL转义

       <#setting url_escaping_charset=”UTF-8”>

       <#assign x=’a/b c’>

       ${x?url}

(21)split

       拆分字符串

(22)start_with

       用于判断一个字符串是否由某个子串开始,返回布尔值。

(23)string (与字符串一起使用)

       用于字符串时只是简单的返回字符串。

(24)trim

       用于删除字符串首尾的空格。

(25)word_list

       查找一个字符串中的所有单词,按照它们出现的顺序返回一个序列。

(26)xml

       xml特殊字符转义:

       <转换为&lt;

       >      &gt;

       &      &amp;

              &quot;

              &apos;

(27)c

       用于将数字转换为字符串

(28)string  (与数字一起使用)

       <#assing num=42>

       ${num}

       ${num?string.number}   ${num?string.currency}   ${num?string.percent}

       ${num?string(“,##0.00”)}       数字格式化

(29)string  (与日期一起使用)

       ${date?string(“yyyy-MM-dd hh:mm:ss”)}

 

4.操作序列:

(1)first

       ${[“one”,”two”,”three”]?first}   显示:one

(2)last

(3)seq_contains

(4)seq_index_of

(5)seq_last_index_of

(6)reverse

(7)size

(8)sort

(9)sort_by

(10)chunk

       <#assign seq=[‘a’,’b’,’c’,’d’,’e’]>

       <#list seq?chunk(3) as row>

              <#list row as cell> ${cell}</#list>

       <#list>

输出结果为:

a  b  c

d  e

 

<#list seq?chunk(4,’-’) as row>

       <#list row as cell> ${cell}</#list>

</#list>

输出结果:

a  b  c

d  e  -

 

5.操作散列:

(1)    Keys

返回散列中的所有的key.

<#assign  map={“name”:”mouse”,”price”:50}>

<#assign keys=h?keys>

<#list keys as key> ${key}=${map[key]}</#list>

(2)    values

<#assign values=map?values>

<#list values as value> ${value}</#list>

 

缺少值外理操作符:

如果你指定的变量没有定义,或者为null。如果你访问一个为null的变量,那么freeMarker将抛出错误。

freeMarker中,变量不存或者为null,都被看作是缺少值。

(1)    默认值操作符:!

${val!”abc”}

(2)    缺少值测试操作符:??

<#if  val??>

 Not null

<#if>

 

6.Jsp标签支持:

web.xml文件中配置JspSupportServlet

<servlet>

       <servlet-name>jspSupport</servlet-name>

       <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>

       <load-on-startup>1</load-on-startup>

</servlet>

 

在模板文件中引入:

<#assign c=JSPTaglibs[“/WEB-INF/tld/c.tld”]>

<@c.out value=”Hello”/>

分享到:
评论

相关推荐

    freemarker语法完整版

    Freemarker页面语法 A 概念 最常用的 3 个概念 sequence 序列,对应java 里的list 、数组等非键值对的集合 hash 键值对的集合 namespace 对一个ftl 文件的引用, 利用这个名字可以访问到该ftl 文件的资源 ...

    freemarker-2.3.31-API文档-中文版.zip

    赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.31.pom; 包含翻译后的API文档:...

    freemarker-2.3.30-API文档-中文版.zip

    赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...

    freemarker生成xml示例

    这个示例是关于如何使用Freemarker来生成XML文件,对于初学者来说,理解这个过程有助于掌握Freemarker的基本用法和XML的生成技巧。 在Java中,Freemarker与数据模型结合,通过模板文件生成输出。对于XML生成,首先...

    java利用FreeMarker导出word

    Java利用FreeMarker导出Word是一项常见的技术需求,尤其在企业级应用中,常常需要将动态数据生成为Word文档,例如报告、合同等。FreeMarker是一个模板引擎,它能将Java对象的数据绑定到模板上,生成HTML、XML或者如...

    Freemarker简介及标签详解大全

    Freemarker 简介及标签详解大全 FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写。FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker ...

    模板:velocity和freemarker的比较

    Velocity和Freemarker模板技术比较 模板技术在现代软件开发中扮演着重要角色,而在目前最流行的两种模板技术中, Velocity 和 Freemarker 独占鳌头。在 WebWork2 中,我们可以随意选择使用 Freemarker 或 Velocity ...

    Freemarker中遍历list集合实例

    本实例将详细介绍如何在Freemarker中遍历list集合,帮助你理解和应用这一核心功能。 在Freemarker中,遍历list集合主要依赖于`&lt;#list&gt;`指令。当你有一个Java对象,例如一个ArrayList或LinkedList,这些对象在...

    可视化div布局 生成freemarker模板

    本话题主要探讨的是如何利用可视化div布局来生成FreeMarker模板,并结合Spring MVC 3框架进行应用。下面将详细阐述这些概念及其相关知识点。 1. **FreeMarker模板引擎**:FreeMarker是一个开源的Java模板引擎,它...

    freemarker Demo 适用于freemarker初学

    Freemarker是一个强大的模板引擎,常用于JavaEE应用中的视图层处理,尤其与Struts2等MVC框架配合使用,能实现灵活的动态页面渲染。这个"freemarker Demo"是一个适合初学者的示例项目,旨在帮助新接触Freemarker的...

    安装freemarker插件(freemarker的eclipse插件)

    安装freemarker插件(freemarker的eclipse插件) a) 首先下载 freemarker-ide-0.9.14.zip(在这里不用下载了,附件中已经有了) b) 解压后:把hudson.freemarker_ide_0.9.14这个文件放到:eclipse\plugins下面 c) 发现...

    struts2+hibernate+freemarker项目实例

    Struts2、Hibernate和FreeMarker是Java开发领域中常见的三个开源框架,它们分别在MVC(Model-View-Controller)架构的不同层面发挥着关键作用。这个"struts2+hibernate+freemarker"项目实例是将这三个框架集成到一起...

    Freemarker通用select下拉框

    Freemarker是一个强大的模板引擎,常用于Web应用中的视图层渲染,比如Spring MVC框架中的JSP替代技术。本示例关注的是如何在Freemarker(FTL)中创建一个通用的`select`下拉框,以满足各种Web界面中的下拉选择需求。...

    freemarker

    一篇freemarker很不错的文章 reeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:格式部分,不会输出 3,插值:即${...}或#{...}格式的部分,将使用...

    JAVA项目代码绘制PDF和通过freemarker动态生成PDF

    3. freemarker(FreemarkerUtils) 对于没有使用宏、函数等word、excel,需要按模板动态生成word、excel、html,只需要一个freemarker,先将word、excel、html等另存为**xml**,即可使用模板动态生成文件,目前xlsx是...

    freemarker基本语法整理

    Freemarker 基本语法整理 作为一款流行的模板引擎,Freemarker 在 Struts2 框架中扮演着重要的角色。本文将对 Freemarker 的基本语法进行整理,涵盖输出、逻辑判断、循环遍历、宏等方面的知识点。 输出 在 ...

    freemarker模板技术生成复杂word文档---解决了编码问题

    大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出‘.doc’ word文档。经测试这样方式生成的word文档完全符合office标准,...

    freemarker-2.3.30-API文档-中英对照版.zip

    赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...

    freemarker 2.3.10架包

    这个“freemarker 2.3.10”压缩包包含了该版本的Freemarker库及相关资源,旨在帮助开发者更便捷地学习和使用Freemarker技术。 Freemarker的核心概念是基于模板的编程模型,它将数据模型与HTML(或其他格式)模板...

Global site tag (gtag.js) - Google Analytics