ftl编辑器(freemarker)的使用和说明

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

一、准备工作

1.1 下载文件

可以从/站点下载最新的freemarker.jar包(目前最新版本是2.3.18)与eclipse插件(最新版本是0.9.14)。

1.2 安装eclipse插件

将下载来的eclipse插件解压缩到本地磁盘,更改hudson.freemarker_ide_0.9.14文件夹中的freemarker-2.3.6.jar文件更改成最新版本的freemarker-2.3.18.jar,并且将META-INF/MANIFEST.MF文件中的Bundle-ClassPath属性值修改为freemarker-2.3.18.jar。最后将hudson.freemarker_ide_0.9.14放到eclipse的plugins目录中,完成eclipse 插件的安装。

1.3 freemarker文档下载

从/官方网站中下载帮助文档(也有中文的手册)

二、freemarker的使用

2.1 简介

2.1.1 FTL tag标签

由于freemarker tag标签是属于freemarker的指令,它们仅仅是freemarker 处理过程中的信息,而不会输出到页面上,所以它们与html标签有一些区别。这些标签都是以#号开头,如<#import "/public/work_public.ftl" as public>。但用户自定义的标签是以@符号开头,如在freemarker中使用struts标签:<@s.if test="results!=null&&results.size()!=0">

注意FTL标签不可以在其他FTL标签和插值中使用(注释可以在FTL标签和插值中使用,因为它在解析时,整个注释都将抛弃,不会影响具体代码),如下面这样就是一个错误的写法:

<#if <#include 'foo'>='bar'>...

2.1.2 注释

freemarker的文档注释与html相似,但它是以<#--和-->来分割的。任何介于这两个分隔符(包含分隔符本身)之间内容会被freemarker忽略,就不会输出出来了。其他任何不是FTL 标签,插值或注释的内容将被视为静态文本,这些东西就不会被freemarker所解析,会被按照原样输出出来。

2.1.3 引入外部文件

如果模板文件使用了struts2标签,则可以这样调用:

<@s.include value="/public/publis.jsp" />

在freemarker版本2.3.15及其以后都可以使用如下方式引入外部文件:

<@include_page path="/public/publis.jsp"/>或者使用:<#include "/copyright_footer.html">的方式引入外部文件。

注意:<#include "/copyright_footer.html">是为了包含freemarker模板而不会牵涉到servlet容器,使用<#include..>包含的模板和包含它的模板共享模板处理状态,比如数据模型和模板语言变量,而<@include_page..>开始一个独立的HTTP请求处理。

对于js、css等其他外部资源的引入方式不变,依旧是类似:

注意该路径与ftl文件路径地址无关,而是真正的访问路径。

2.2 freemarker与spring的集成

将freemarker.jar包放到web工程的lib目录中,并在web.xml文件中加入如下的代码:

freemarker

freemarker.ext.servlet.FreemarkerServlet

TemplatePath

/

NoCache

true

ContentType

text/html

template_update_delay

0

1

freemarker

*.ftl

2.3 freemarker中使用struts标签

由于freemarker本身的标签在变量名不存在或变量为null的情况下处理比较复杂(它不允许出现这两种情况的变量,在使用可能出现变量名不存在或null值的变量时,首先需要判断该变量是否存在,否则当出现这两种情况时,freemarker会报解析错误,这将直接在最终生成的html页面中显示出来),所以当不能确定该值是否存在时,可以在freemarker中使用struts标签,它没有这类的问题(freemarker也提供了判断一个值是否为空的情况,如${list!}或者使用<#if指令来判断指定的变量是否存在:<#if list?exists && list!=null>或<#if list!=null>)。

首先将struts2-core.jar包中的struts-tags.tld文件加入到WEB-INF/tags 文件夹中

然后在需要加入struts2标签的freemarker的ftl文件头部加入如下语句:

<#assign s=JspTaglibs["/WEB-INF/tags/struts-tags.tld"]>

注意:与在jsp中使用标签类似,每个使用ftl文件的头部都需要加上上述#assign 标签,在公共文件中加入上述#assign后,其他引用该公共文件的ftl文件中若想使用struts标签的话,也是需要再次加入的。

例如:strtus2的判断语句在freemarker文件中的使用方式如下:

<@s.if test="results!=null&&results.size()!=0">

${public_count_data}<@s.property value="results.size()"/>

<@s.else>

${public_none_data}

2.4 变量

在freemarker中变量是区分大小写的,如list就不能写成List。定义变量使用assign标签,具体使用如:<#assign test_string="字符串">,也可以使用如<#assign test_string_array=["字符串1","字符串2","字符串3"]>的方式来定义数组(或列表)

可以使用如下两种方式在页面上显示一个变量:

struts2的property标签

<@s.property value="#er_name"/>

freemarker的${}标签

相关文档
最新文档