关闭

我的FreeMarker入门学习

684人阅读 评论(0) 收藏 举报
分类:

1Freemarker 与JSP的区别

1.1标签的使用一般以符号#开头(FTL标签)

 标签的使用一般以符号#开头。(用户自定义的FTL标签使用@符号来代替#).

  如:<#if>、<#list>

1.2${…}(插值)

 ${…} 输出一个变量值

1.3基础指令

 HTML一般基础指令比如判断、遍历等等都是用jsp控件.格式一般为:<for>

 Freemarker具有一些基础指令如判断、遍历等等.格式一般为:<# if>

1.3.1<#if>

  <#if user='admin'> admin </#if> 

   //user表示应用的变量:在指令中变量相当于'${}'

1.3.2<#list>

   <#list animals as being>

  //animals为集合,being为集合中某对象.这种类似Java的foreach

1.3.3<#include>

  <#include>跟jsp<%@include%>相似

1.3.4不存在的变量

   ●使用"!"+默认值:${user!"Anonymous"}  //相当于Java的三元运算.

   ●使用"??":<#if user??></#if> //用"??"询问是否是不存在变量,如果为true就

    不显示<#if>里信息.相当于Java的if(user!=null )   

1.4Fragment自带内建函数(?形式)

  内建函数提供始终可用的内置功能。内建函数以?形式提供变量的不同形式或者其他信息.如:${test?html},${test?upper_case?html}.

2自定义指令

2.1模板定义

2.1.1创建和使用宏(相当于创建对象)

     创建: <#macro greet>Hello</#marcro>

     使用: <@ greet/>

2.1.2使用参数(宏名称的后面位置用来定义变量,如果是多个变量用空格分隔)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

     创建:<#macro greet person>Hello ${person}</#macro>.

     使用:<@greet person="fred"/>

2.1.3嵌套内容(相当于调用方法)

    在创建宏中可以通过<#nested>嵌套内容,也就是把引入宏位置里的内容写到<#nested>位置.如:

   创建:<#macro greet person><table><#nested></table></#macro>

   使用:<@greet person='abs'><tr>123</tr></@greet>

   输出:<table><tr>123</tr><table>

2.1.4命名空间

  ●如何在宏、循环中访问局部变量?                                 

     将局部变量申明为全局变量<#global x = 1>,在通过${.globals.x}访问

  ●如果在同一个页面,多次引用(<#include>)同一个模板,该怎么区分?

   将<#include>该为<#import>如:<# import "login.flt" as my>,

   <#import "login.flt" as other>这样同一个页面多次引入同一个模板.

  注意:

  a修改变量<#assign username="admin " in my>

  b多次引用其实是引用的同一个对象,所以使用my改变 username,那么

   other获取的是username新值即admin.

2.1.5申明变量       

  ●简单变量:可以在模板中任何位置访问.用assign或macro指令来创建或替换这些变量.

  ●局部变量:只能在宏定义之内访问.用local指令来创建或替换这些变量(局部变量会隐藏非覆盖简单变量)

  ●循环变量:在list中自动创建,用assign来创建或替换这些变量(循环变量会隐藏非覆盖简单变量和局部变量).

2.2Java定义

●通过FileClassServlet创建Configuration.

●设置Configuration的输入、输出值

●设置Configuration的对象包装

Configuration通过shared(Configureation)EnvironmnetTemplate三层设置值

●创建Template,通过process设置任何对象数据.包括Java对象、XML.

●创建Template模板的时候(getTemplate)同时也缓存了模板.可调用  clearTemplateCache()清除模板缓存(可设置清除策略)、也可设置模板延迟更新时间,默认为5.

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:30884次
    • 积分:517
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    最新评论