freemarker( 二)

5.变量的声明

  • plain变量:可以在模板的任何地方访问,包括使用include指令插入的模板,使用assign指令创建和替换

    <#assign num=0/>
    <#assign x="Hello ${user}!"/>

  • 局部变量:在宏定义体中有效,使用local指令创建和替换

  • 循环变量:只能存在于指令的嵌套内容,由指令(如list)自动创建;宏的参数是局部变量,而不是循环变量

6.运算符的优先级

FreeMarker中的运算符优先级如下(由高到低排列):

  • 1,一元运算符:!
  • 2,内建函数:?
  • 3,乘除法: *, / , %
  • 4,加减法:- , +
  • 5,比较: > , < , >= , <= (lt , lte , gt , gte)
  • 6,相等: == , = , !=
  • 7,逻辑与:&&
  • 8,逻辑或: ||
  • 9,数字范围:..

7.其他指令

7.1 include指令

include指令的作用类似于JSP的包含指令,用于包含指定页.include指令的语法格式如下:
<#include filename [options]>

在上面的语法格式中,两个参数的解释如下:
filename:该参数指定被包含的模板文件
options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,其中encoding指定包含页面时所用的解码集,而parse指定被包含文件是否作为FTL文件来解析,如果省略了parse选项值,则该选项默认是true.

7.2 import指令

该指令用于导入FreeMarker模板中的所有变量,并将该变量放置在指定的Map对象中,import指令的语法格式如下:

<#import "/lib/common.ftl" as com>

上面的代码将导入/lib/common.ftl模板文件中的所有变量,交将这些变量放置在一个名为com的Map对象中.

7.3 setting指令

该指令用于设置FreeMarker的运行环境,该指令的语法格式如下:<#setting name=value>,在这个格式中,name的取值范围包含如下几个:

  • locale:该选项指定该模板所用的国家/语言选项
  • number_format:指定格式化输出数字的格式
  • boolean_format:指定两个布尔值的语法格式,默认值是true,false
  • date_format,time_format,datetime_format:指定格式化输出日期的格式
  • time_zone:设置格式化输出日期时所使用的时区
7.4 macro ,nested,return 指令

macro可以用于实现自定义指令,通过使用自定义指令,可以将一段模板片段定义成一个用户指令,使用macro指令的语法格式如下:

<#macro name param1 param2 ... paramN> 
... 
<#nested loopvar1, loopvar2, ..., loopvarN> 
... 
<#return> 
... 
</#macro> 

在上面的格式片段中,包含了如下几个部分:

  • name:name属性指定的是该自定义指令的名字,使用自定义指令时可以传入多个参数
  • paramX:该属性就是指定使用自定义指令时报参数,使用该自定义指令时,必须为这些参数传入值
  • nested指令:nested标签输出使用自定义指令时的中间部分
  • nested指令中的循环变量:这此循环变量将由macro定义部分指定,传给使用标签的模板
  • return指令:该指令可用于随时结束该自定义指令.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1...
    年轻小伙程序员阅读 3,033评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 目录 前言 FTL指令规则 插值规则 表达式 FreeMarker的常用指令 高级方法 前言 FreeMarker...
    garyond阅读 4,772评论 0 8
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,926评论 6 342
  • 实现原理: 1.将三者都设置float:left; 2.middlw:width:100%; 沾满一行;所以要把l...
    love2013阅读 274评论 0 0