Java模板引擎FreeMarker系列之七FreeMarker四种变量的用法

freemarker的变量可以分为四种,分别是数据模型的变量【root中的变量】,模板中的变量使用【<#assign>定义的变量】,局部变量【在指令中的变量】,循环变量【在循环中的变量】

 

数据模型的变量【root中的变量】

直接从模型中给模板传值的变量就是数据模型的变量,它把变量的值放在一个map中,在模板中直接可以用。

@Test

public void test10() {

   root.put("username","张三");

   fu.print("10.ftl",root);

}

${username}

张三

 

模板中的变量使用【<#assign>定义的变量】

模板中的变量,是使用<#assign定义的变量,如果模板中定义的变量和模型中的变量名称一致,不是覆盖,而是隐藏

<#assign username="李四">

<#--此时模板中的变量的名称和模型中的变量名称一致,不是覆盖,而是隐藏-->

${username}

李四

模型中的变量被隐藏后,可以使用.globals可以访问模型中的变量

<#--使用.globals可以访问模型中的变量-->

${.globals.username}

张三

 

局部变量【在指令中的变量】

使用local可以声明局部变量

<#macro test>

   <#--

   此时当调用该指令之后,会将模板中的变量username覆盖为王五

   所以这种方式存在风险,所以一般不使用这种方式在指令中定义变量

   -->

   <#--<#assign  username="王五"/>-->

   <#--使用local可以声明局部变量,所以在marco中非特殊使用局部变量-->

   <#local  username="王五"/>

   ${username}

</#macro>

<@test/>

${username}

   王五

李四

 

循环变量【在循环中的变量】

在list循环中定义的变量,循环中的变量只在循环中有效,也是一种临时的变量定义方式

<#list 1..3 as username>

   <#--循环中的变量出了循环就消失-->

   ${username}

</#list>

${username}

   1

   2

   3

李四

转载于:https://www.cnblogs.com/hanhuibing/articles/4096596.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值