FreeMarker的常用指令

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载 谢谢。 https://blog.csdn.net/Robust_An/article/details/52614614 ...
版权声明:本文为博主原创文章,未经博主允许不得转载 谢谢。 https://blog.csdn.net/Robust_An/article/details/52614614

1 FreeMarker的常用指令  
FreeMarker的FTL指令也是模板的重要组成部分,这些指令可实现对数据模型所包含数据的抚今迭代,分支控制.除此之外,还有一些重要的功能,也是通过FTL指令来实现的.
 
1.1 if指令  
这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,
if指令的语法格式如下: 
 <#if condition>... 
   <#elseif condition>...
   <#elseif condition>... 
   <#else> ... 
</#if>
例子如下: 
<#assign age=23> 
  <#if (age>60)>老年人 
  <#elseif (age>40)>中年人 
  <#elseif (age>20)>青年人 
  <#else>少年人 
</#if>  
输出结果是:青年人
上面的代码中的逻辑表达式用括号括起来主要是因为里面有>符号,由于FreeMarker会将>符号当成标签的结束字符,可能导致程序出错,为了避免这种情况,我们应该在凡是出现这些符号的地方都使用括号.  

1.2 switch , case , default , break指令  
这些指令显然是分支指令,作用类似于Java的switch语句,
switch指令的语法结构如下: 
<#switch value>  
  <#case refValue>...
  <#break> 
  <#case refValue>...
  <#break> 
  <#default>... 
</#switch>  

1.3 list, break指令  list指令是一个迭代输出指令,用于迭代输出数据模型中的集合,list指令的语法格式如下: <#list sequence as item> ... </#list>  上面的语法格式中,sequence就是一个集合对象,也可以是一个表达式,但该表达式将返回一个集合对象,而item是一个任意的名字,就是被迭代输出的集合元素.此外,迭代集合对象时,还包含两个特殊的循环变量: item_index:当前变量的索引值 item_has_next:是否存在下一个对象 也可以使用<#break>指令跳出迭代 
例子如下:  
<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x> 
  ${x_index + 1}.${x}<#if x_has_next>,</if> 
  <#if x="星期四">
  <#break>
  </#if> 
</#list>  

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

1.6 assign指令 
assign指令在前面已经使用了多次,它用于为该模板页面创建或替换一个顶层变量,assign指令的用法有多种,包含创建或替换一个顶层变量,或者创建或替换多个变量等,
它的最简单的语法如下:
<#assign name=value [in namespacehash]>
这个用法用于指定一个名为name的变量,该变量的值为value,此外,FreeMarker允许在使用assign指令里增加in子句,in子句用于将创建的name变量放入namespacehash命名空间中. 
assign指令还有如下用法:
<#assign name1=value1 name2=value2 ... nameN=valueN [in namespacehash]>
这个语法可以同时创建或替换多个顶层变量,此外,还有一种复杂的用法,如果需要创建或替换的变量值是一个复杂的表达式,则可以使用如下语法格式:<#assign name [in namespacehash]>capture this</#assign>
在这个语法中,是指将assign指令的内容赋值给name变量.
如下例子: 
<#assign x> 
 <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
   ${n} 
 </#list> 
</#assign> ${x} 
上面的代码将产生如下输出:星期一星期二星期三星期四星期五星期六星期天 虽然assign指定了这种复杂变量值的用法,但是我们也不要滥用这种用法
如下例子:
<#assign x>
  Hello ${user}!
</#assign>
以上代码改为如下写法更合适:
<#assign x="Hello ${user}!"> 
目录
相关文章
|
5月前
|
索引
FreeMarker - 常用指令和宏
FreeMarker - 常用指令和宏
33 0
|
6天前
|
Python
配置模板引擎
【5月更文挑战第5天】配置模板引擎。
30 13
|
6月前
Thymeleaf获取根目录
Thymeleaf获取根目录
|
6月前
|
JavaScript
Freemarker获取项目根目录
Freemarker获取项目根目录
|
12月前
|
前端开发 Java
springboot+freemarker+bootstrap快速实现分页功能(含java源码)
springboot+freemarker+bootstrap快速实现分页功能(含java源码)
freemarker+yml介绍 以及freemarker与JSP的区别
1. freemarker介绍 2. freemarker使用步骤   2.1 在pom.xml引入freeMarker的依赖包   2.2 在springboot中添加freemarker配置   2.3 编写模板文件*.ftl(当做jsp使用即可)​编辑   2.4 访问控制器后进行页面跳转       3. freemarker常用语法   3.1 取值    3.2 条件    3.3 循环    3.4 include    3.5 局部变量(assign)/全局变量(global) 4. yml的介绍 5."freemarker"和"jsp"的区区别和联系有
|
设计模式 前端开发 Java
【JavaWeb】模板引擎Thymeleaf
内容提取出来单独的放在一个文件中,称为模板,对于一些动态的内容,可以将这些内容在模板中使用占位符占位,当服务器把这些动态的内容计算好了之后,就可以把模板中占位符替换成动态计算的结果,然后把组装好的HTML格式的字符串在返回给浏览器
【JavaWeb】模板引擎Thymeleaf
|
Java 程序员 Apache
模板引擎——FreeMarker初体验
FreeMarker 是一款模板引擎:一种基于模板的、用来生成输出文本(任何来自于 HTML格式的文本用来自动生成源代码)的通用工具。
|
前端开发 Java API
SpringBoot学习---thymeleaf模板引擎
SpringBoot学习---thymeleaf模板引擎
SpringBoot学习---thymeleaf模板引擎
Freemarker教程2(表达式和常用指令)
Freemarker教程2(表达式和常用指令)
Freemarker教程2(表达式和常用指令)