Freemark--Template Engine

Freemark--What is Freemark?


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

--request

​ --template + Freemark-dataService

​ --HTML

--response

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

Base Grammar--How to use freemark in program?


​ Freemark有一套自己的基础语法(大体上和HTML相似),通过基础语法可以迅速的生成不同的界面。

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

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

注解:注释和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对象.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325975980&siteId=291194637
Recommended