<#compress>
<#-- 测试变量作用域 -->
<#-- golbal 所有命名空间可见 -->
<#global x=12>
${x} <#-- 本次会打印 12 -->
<#-- assign 当前命名空间可见 -->
<#assign x=10>
${x} <#-- 本次会打印 10 -->
<#-- 类似于list中的循环变量:当前循环体可见 本次会打印 1 2 3 -->
<#list [1,2,3] as x>
${x}
</#list>
<#-- local 定义的变量只允许在宏也就是 macro中使用 -->
<#macro testScope x lista>
<#local x='bb'>
${x} <#-- 会打印bb,而不是12,说明此处定义的变量直接覆盖了宏里面的同名变量 -->
<#local x=30>
${x} <#-- 会打印30 -->
<#assign x=40>
${x} <#-- 注意:会打印30,不是40 说明在宏里面assign即便定义在后面,作用域也不如local高 -->
<#list lista as x>
<#local x='aa'>
${x} <#-- 注意:此处不会打印 aa 因为循环变量作用域的优先级更高!! -->
</#list>
${x} <#-- 此处才会打印 aa 说明local的作用域不局限于list循环体中:这个Java有明显的区别 -->
</#macro>
<#-- 本次会打印 bb 30 30 a b aa -->
<@testScope x=12 lista=[
FreeMarker变量作用域测试
最新推荐文章于 2024-08-07 09:38:48 发布
本文详细探讨了FreeMarker模板引擎中的变量作用域,包括局部变量、页面作用域、请求作用域、会话作用域和应用作用域。通过实例分析,展示了不同作用域下变量的生命周期和可见性,帮助读者深入理解如何在FreeMarker模板中有效地管理和使用变量。
摘要由CSDN通过智能技术生成