Freemark--Template Engine

Freemark--What is Freemark?


​ FreeMark是一套模板引擎,也就是一套用过提供==数据模型==和==HTML模板==生成动态页面的通用工具。html

--requestjava

​ --template + Freemark-dataService程序员

​ --HTML服务器

--response函数

​ 既Freemark经过提供的==模板==+==数据模型==动态生成HTML界面返回给用户的一套引擎工具。他会在WEB服务器响应response用户请求request的时候经过部署在WEB服务器上的模板动态的生成不一样的界面返回。这里的数据模型经常是java对象。工具

Base Grammar--How to use freemark in program?


​ Freemark有一套本身的基础语法(大致上和HTML类似),经过基础语法能够迅速的生成不一样的界面。ui

​ 在平常的开发中只要掌握简易的Freemark语法加上一点HTML基础就能迅速的入手开发。code

${......}:FreeMarker将会输出真实的值来替换大括号内的表达式,这样的表达式被称为interpolation(插值).htm

注解:注释和HTML的注释也很类似,可是它们使用<#-- and -->来标识。不像HTML注释那样,FTL注释不会出如今输出中(不出如今访问者的页面中),由于FreeMarker会跳过它们。对象

FTL标签:FreeMarker模板的语言标签。FTL标签和HTML标签有一些类似之处,可是它们是FreeMarker的指令,是不会在输出中打印的。这些标签的名字以==#==开头。

(用户自定义的FTL标签则须要使用@来代替#)

给出几个经常使用的指令,其他指令在开发须要时查询便可

<#if condition>...
      <#elseif condition2>...
      <#elseif condition3>...
      <#else>...
      </#if>
<#include>...
  </#include>
<#import "/lib/common.ftl" as com>
<#switch value> 
  <#case refValue>...<#break> 
  <#case refValue>...<#break> 
  <#default>... 
  </#switch>
<#list>...
      </#list>

Inner function--Advanced tutorials


​ 就像是java中方法同样,内建函数一般为咱们开发WEB程序提供便利。它们并非数据模型中的东西,是FreeMarker在数值上添加的。为了清晰子变量是哪部分,==使用?代替==,.(点)来访问它们。

  • [x] html 若是在 <#list animals as animal> ... </#list> animal?index给出了在animals中基于0开始的animal的索引值 animal?counter也像index,可是给出的是基于1的索引值 animal?item_parity基于当前计数的奇偶性,给出字符串“odd”或“even”。在给不一样行着色时很是有用,好比: <td class="${animal?item_parity}Row">

    内建函数多种多样,并不一一列举,只举出几个经常使用的

cap_first:使字符串第一个字母大写

lower_case:将字符串转换成小写

upper_case:将字符串转换成大写

trim:去掉字符串先后的空白字符

exists:判断对象是否是null

也能够直接${mouse?if_exists})

${openingTime?date} ${openingTime?date_time} ${openingTime?time}

输出布尔形 经常使用格式化日期 openingTime必须是Date型,详细查看freemarker文档 Reference->build-in referece->build-in for date

​ 其他开发用到的时候在去查询便可,值得一提的是== 空值 ==

​ 数据模型中常常会有可选的变量(有时并不存在)。除了一些人为缘由致使失误外,FreeMarker不能引用不存在的变量,除非明确地告诉它当变量不存在时如何处理,以下两种典型的处理方法:

  1. 这部分对程序员而言:一个不存在的变量和一个是null值的变量
  2. 对于FreeMarker来讲是同样的,因此这里所指的“丢失”包含这两种状况。
  3. 在哪里引用变量,均可以指定一个默认值来避免变量丢失这种状况,经过在变量名后面跟着一个==!==和==默认值==。
<h1>Welcome ${user!"visitor"}!</h1>

​ 这个例子,当user不存在于数据模型时,模板将会将user的值表示为字符串 “visitor”。(当 user 存在时,模板就会表现出 ${user} 的值)

! 空值的语法:

  1. variable!
  2. variable!defaultValue

​第一种用法不给缺失的变量指定默认值,代表默认值是空字符串,长度为0的集合,或者长度为0的Map对象.

相关文章
相关标签/搜索