#assign和#global变量范围如何在ftl中运行?

时间:2014-08-20 11:54:38

标签: freemarker scripting-language

我目前正在寻找#assign变量的范围。但是,范围似乎令人困惑,请参阅以下示例并尝试解释。我有一些假设可行,但如果有人有具体的文件,那将非常有帮助。

<#assign test1 = a.test1/>
<#if some_condition>
    <#if a.test1?contains(",")>
        <#assign mylist = a.test1?split(",")/>
        <#assign test1 = mylist?size-1?int/>
    </#if>
    <!-- Line is giving me exception, if I convert everything to #global it works -->
    <#assign testing>${test1} SAJNF</#assign>
</#if>

有人可以在#assign和#global中解释范围吗?

1 个答案:

答案 0 :(得分:2)

该示例应与#assign#global同样有效。那里你有某种疏忽。

#assign VS #global开始:通过#assign设置的变量只能从分配它们的模板中看到,另外在#include - d所在的模板中可见该模板(或#include - d模板中的#include - d等),因为#include - ing非常类似于复制粘贴。但是,如果您#import是一个模板,因为它有自己的命名空间,它就不会与#assign模板共享#import个变量。它会与它共享全局变量;从每个模板中可以看到使用#global设置的变量,就像数据模型一样。你几乎不应该使用#global BTW。