java中freemaker定义变量_FreeMarker - 四种变量的用法

freemarker的变量可以分为四种,分别是数据模型的变量(root中的变量),模板中的变量使用(定义的变量),局部变量(在指令中的变量)和循环变量。

【1】数据模型的变量

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

Java代码:

@RequestMapping("/hello")

public ModelAndView hello(){

ModelAndView mv = new ModelAndView();

mv.addObject("msg", "hello world !");

mv.setViewName("hello");

return mv;

}

FTL文件:

${msg}

//hello world !

【2】模板中的变量

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

FTL文件:

${msg}

//Hi

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

${.globals.msg}

//hello world !

【3】局部变量

使用local可以声明局部变量。

FTL文件:

--> ${msg} #macro> ${msg}

【4】循环变量

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

${msg}

#list>

//result as follows :

1

2

3

【5】assign指令

assign指令在前面已经使用了多次,它用于为该模板页面创建或替换一个顶层变量。

assign指令的用法有多种,包含创建或替换一个顶层变量,或者创建或替换多个变量等。

它的最简单的语法如下:

这个用法用于指定一个名为name的变量,该变量的值为value。

此外,FreeMarker允许在使用assign指令里增加in子句, in子句用于将创建的name变量放入namespacehash命名空间中。

assign指令还有如下用法:

这个语法可以同时创建或替换多个顶层变量。

此外,还有一种复杂的用法。

如果需要创建或替换的变量值是一个复杂的表达式, 则可以使用如下语法格式:

capture this#assign>

在这个语法中,是指将assign指令的内容赋值给name变量.如下例子:

${n}

#list>

#assign>

${x}

上面的代码将产生如下输出:

星期一 星期二 星期三 星期四 星期五 星期六 星期天

虽然assign指定了这种复杂变量值的用法,但是我们也不要滥用这种用法。

如下例子:

Hello ${user}!#assign>

以上代码改为如下写法更合适:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值