freemarker 教程

freemarker

前言

FreeMarker 是一款模板引擎:即一种基于模板、用来生成输出文本(任何来自于 HTML格式的文本用来自动生成源代码)的通用工具。
FreeMarker 实际上是被设计用来生成 HTML 页面,尤其是通过实现了基于 MVC(Model View Controller, 模型-视图-控制器)模式的 Java Servlet 应用程序。

freemarker的常用指令

模板+数据模型(java)=输出

  • 插值
    ${variableName}
    ${obj.attr}

  • 逻辑运算符,逻辑运算符只能用于布尔值。
    &&:逻辑与;||:逻辑或; !:逻辑非

  • 内建函数
    FreeMarker提供了一些内建函数来转换输出,可以在任何变量后紧跟?,?后紧跟内建函数,就可以通过内建函数来转换输出变量。

  1. 字符串相关常用的内建函数
    html:对字符串进行HTML编码;
    cap_first:使字符串第一个字母大写;
    lower_case:将字符串转成小写;
    upper_case:将字符串转成大写;

  2. 集合相关常用的内建函数

    size:获得集合中元素的个数;

  3. 数字值相关常用的内建函数

    int:取得数字的整数部分。

模板开发语句

  • if使用指令(常用必会)

     <#if x == 1>  
            x is 1  
     </#if>  
     //else if ; else 用法
      <#assign age=23> 
      <#if (age>60)>老年人 
      <#elseif (age>40)>中年人 
      <#elseif (age>20)>青年人 
      <#else> 少年人 
    

</#if>


* switch使用指令(常用必会)

<#switch x>
<#case 1>
1
<#break>
<#case 2>
2
<#break>
<#default>
0
<#break>
</#switch>


* list循环格式(常用必会)

<#list students as s>

${s.no}
${s.name}
${s.sex}

</#list>


* assign指令使用示例,定义模板变量,可以使用模板变量(常用必会)

<#-- 直接定义 -->

<#assign x="Hello ${user}!">
<#-- 定义 -->
<#assign x>
<#list ["星期一", "星期二", "星期三", "星期四", "星期五"] as n>
${n}
</#list>
</#assign>
${x}


* 集合以及对象都可以做叠加(常用必会)
<#list ["星期一","星期二","星期三"] + ["星期四","星期五"] as x> 

${x}
</#list>
<#assign scores = {"语文":86,"数学":78} + {"数学":87,"Java":93}>


*   import指令 (常用必会)
该指令用于导入FreeMarker模板中的所有变量,并将该变量放置在指定的Map对象中,import指令的语法格式如下: `<#import "/lib/common.ftl" as com> `
上面的代码将导入`/lib/common.ftl`模板文件中的所有变量,交将这些变量放置在一个名为`com`的Map对象中. 
 
 
* include语法(常用必会)
可以包含页面:`<#include filename [options]> `,在上面的语法格式中,两个参数的解释如下: 
1.filename:该参数指定被包含的模板文件 ;
2.options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,其中encoding指定包含页面时所用的解码集,而parse指定被包含文件是否作为FTL文件来解析,如果省略了parse选项值,则该选项默认是true. 

* noparse指令 
noparse指令指定FreeMarker不处理该指定里包含的内容,该指令的语法格式如下: 

<#noparse>
<#list books as book>
${book.name}作者:${book.author}
</#list>
</#noparse>
输出如下:
<#list books as book>
${book.name}作者:${book.author}
</#list>


* escape , noescape指令  
escape指令导致body区的插值都会被自动加上escape表达式,但不会影响字符串内的插值,只会影响到body内出现的插值,使用escape指令的语法格式如下: 

<#escape identifier as expression>...
<#noescape>...</#noescape>
</#escape>
//看如下的代码:
<#escape x as x?html>
First name:${firstName}
Last name:${lastName}
Maiden name:${maidenName}
</#escape>
//上面的代码等同于:
First name:${firstName?html}
Last name:${lastName?html}
Maiden name:${maidenName?html}

* setting指令 
该指令用于设置FreeMarker的运行环境,该指令的语法格式如下:`<#setting name=value>`,在这个格式中,name的取值范围包含如下几个: 
locale:该选项指定该模板所用的国家/语言选项 
number_format:指定格式化输出数字的格式 
boolean_format:指定两个布尔值的语法格式,默认值是true,false 
date_format,time_format,datetime_format:指定格式化输出日期的格式 
time_zone:设置格式化输出日期时所使用的时区 

* 



* 注释部分

`  <#-- 注释部分 -->`

from:https://www.kancloud.cn/eagles/codingrules/316622 

猜你喜欢

转载自blog.csdn.net/GarfieldEr007/article/details/84962594