我是这种编程语言的新手,我有一个名为 model 的集合,我需要在2个不同的宏中完成它。
我尝试将此集合复制到两个不同的全局变量中:
<#global model1=model.issues>
<#global model2=model.issues>
然后,在我的第一个宏中,我做了:
<#macro renderInformationIssues>
<@renderTableFrame title=INFO_MESSAGES_HEADER colNames=INFO_MESSAGE_COLUMN_NAMES colGroups=["g-col-index", "g-col-message"]>
<#list model1 as issue_info>
///////I PRINT SOMETHING FROM MODEL HERE/////////////
</#list>
</@renderTableFrame>
</#macro>
在我的第二个宏中,我做了:
<#macro renderExecutionIssues>
hi1
<@renderTableFrame title=EXECUTION_MESSAGES_HEADER colNames=EXECUTION_MESSAGE_COLUMN_NAMES colGroups=["g-col-index", "g-col-originator", "g-col-message"]>
hi2
<#list model2 as issue>
hi3
///////I WANT TO PRINT SOMETHING ELSE FROM MODEL HERE/////////////
</#list>
</@renderTableFrame>
</#macro>
我调用的第一个宏,它显示内容,但我调用的第二个宏(在本例中, renderExecutionIssue ,没有显示任何内容。实际上,我在第二个宏中看到的是只有 hi1 和 hi2 。
有可能解决这个问题吗?
答案 0 :(得分:0)
那些#global
- s不复制集合; model1
和model2
只会指向同一个对象。但是,java.util.Collection
- s可以列出两次,因此也没有必要复制它们。我怀疑你有java.util.Iterator
(或Enumeration
),因为那些不能列出两次。此外,无法判断Iterator
是否返回0个元素,因为它已经在前面列出,或者因为它总是为空。所以在第二种情况下,不知道发生了什么,FreeMarker只列出了0个元素。如果您希望多次列出某些内容,请将Collection
(如List
)传递给FreeMarker,而不是Iterator
。