assign指令详解


java Freemarker中assign指令为该模板页面创建或替换一个顶层变量。

定义

//第一种方式
<#assign name=value [in namespacehash]>
用于指定一个名为name的变量,该变量的值为value,in子句用于将创建的name变量放入namespacehash命名空间中.
//第二种方式
<#assign name1=value1 name2=value2 ... nameN=valueN [in namespacehash]>
可以同时创建或替换多个顶层变量。
//第三种方式
<#assign name [in namespacehash]>
......
</#assign>

指将assign指令的内容赋值给name变量,主要用于创建或替换的变量值是一个复杂的表达式的这种情况。

例子

  1. assign替换变量值
<#assign x>
<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]as n>
${n}
</#list>
</#assign>
${x}

代码执行输出:

星期一 星期二 星期三 星期四 星期五 星期六 星期天
  1. assign迭代Map
<#-- 这里模拟了一个Map集合,定义了三对键值 -->
<#assign h = {"name":"mouse", "price":50, "weight":30}>
<#-- h?keys 调用了一个包装类的方法,将Map的key取出赋值 -->
<#assign keys = h?keys>
<#-- ${h[key]} 访问到了Map中的value属性 -->
<#list keys as key>${key} = ${h[key]}; </#list>

执行输出:

name = mouse; price = 50; weight = 30;