java中Freemarker macro循环变量

java Freemarker中macro的循环变量是由像list这样的指令自己创建,它的作用范围只是他们的开始标记和结束标记之间。如果在一宏中,存在一个循环变量,并且循环变量的名字和宏的某参数相同,待循环结束之后并不会影响该宏参数的值。

1. macro中使用循环变量

<#macro repeat count>  
<#list 1..count as x>  
<#nested x, x/2, x==count>  
</#list>  
</#macro>  
<@repeat count=4 ; c, halfc, last>  
${c}. ${halfc}<#if last> Last!</#if>  
</@repeat>

运行结果:

1. 0.5  
2. 1  
3. 1.5  
4. 2 Last!  

macro中nestted指令也可以有循环变量(循环变量的含义见下节),调用宏的时候在宏指令的参数后面依次列出循环变量的名字,这里count是宏的参数,c, halfc,last则为循环变量

2. macro中调用多次循环变量

<@repeat count=4 ; c, halfc, last> 
${c}. ${halfc}<#if last> Last!</#if> 
</@repeat> 
<@repeat count=4 ; c, halfc> 
${c}. ${halfc} 
</@repeat> 
<@repeat count=4> 
Just repeat it... 
</@repeat>

Freemarker中macro循环变量和用户定义指令开始标记指定的数目可以不同,调用时少指定循环变量,则多指定的值不可见,调用时多指定循环变量,多余的循环变量不会被创建。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。