ftl编辑器(freemarker)的使用和说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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'>...#if>
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.ext.servlet.FreemarkerServlet
2.3 freemarker中使用struts标签
由于freemarker本身的标签在变量名不存在或变量为null的情况下处理比较复杂(它不允许出现这两种情况的变量,在使用可能出现变量名不存在或null值的变量时,首先需要判断该变量是否存在,否则当出现这两种情况时,freemarker会报解析错误,这将直接在最终生成的html页面中显示出来),所以当不能确定该值是否存在时,可以在freemarker中使用struts标签,它没有这类的问题(freemarker也提供了判断一个值是否为空的情况,如${list!}或者使用<#if指令来判断指定的变量是否存在:<#if list?exists && list!=null>#if>或<#if list!=null>#if>)。
首先将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.if>
<@s.else>
${public_none_data}
@s.else>
2.4 变量
在freemarker中变量是区分大小写的,如list就不能写成List。定义变量使用assign标签,具体使用如:<#assign test_string="字符串">,也可以使用如<#assign test_string_array=["字符串1","字符串2","字符串3"]>的方式来定义数组(或列表)
可以使用如下两种方式在页面上显示一个变量:
struts2的property标签
<@s.property value="#er_name"/>
freemarker的${}标签