我无法向您展示全部代码,但是以下基本上是我在fo-table-body标签内生成动态代码所采取的步骤。
在<fo:table-body>
内部的某个阶段,我希望能够引用名为“ ref”的块并从中向外更改if的值。这可能吗?
<#assign value="Hello World"/>
<fo:block name"ref">
<fo:inline font-weight="bold">Value: </fo:inline>
<fo:inline>${Value}</fo:inline>
</fo:block>
<fo:table-body start-indent="0pt">
// All sorts of data inside the tags
<fo:table-row>
<fo:table-cell></fo:table-cell>
</fo:table-row>
</fo:table-body>
答案 0 :(得分:0)
FreeMarker模板在执行时会不断写入输出,因此,如果您已经打印了一段输出,那么它就不再在FreeMarker手中。 (它可能仍位于Writer
后面的某个缓冲区中,但是FreeMarker对此并不了解。)您可以做的是先生成依赖项部分(fo:table-body
),然后捕获它而不是它像<#assign tableBody><fo:table-body...>...</fo:table-body></#assign>
一样打印它,然后照常生成依赖部分(fo:block
),然后打印捕获的部分(${tableBody}
或<#noescape>${tableBody}</#noescape>
,具体取决于哪种自动-使您转义)。