大家好,freemarker专家们
我知道freemarker的函数和宏之间的区别在于宏可以输出到输出流中,但不能返回值,而函数可以返回值但不能输出到输出流中。
问题是我需要同时输出到输出流中并返回值:
我正在使用freemarker进行递归树遍历,因此我需要一个递归调用的宏。随着树的遍历,我既需要将节点信息打印到输出中,又需要计算并返回有关已遍历节点的统计信息(例如已遍历节点某个属性的总和)。
如果我使用递归调用的宏,我可以将节点信息打印出来,但无法将统计信息返回给调用实体。
如果我使用递归调用的函数,我可以返回统计信息,但无法将节点信息打印到输出流中。
其中一种解决方法是两次遍历树,一次打印节点信息,另一次收集统计信息,但我不想采用这种不太优美的解决方案。
有人能提出更好的解决方案吗?
谢谢!