Freemarker 在我的 fo:table-body 之外动态引用标签

Freemarker Dynamically reference tag outside my fo:table-body

我无法向您展示完整的代码,但以下基本上是我在 fo-table-body 标记内生成动态代码所采取的步骤。

<fo:table-body> 内的某个阶段,我希望能够引用名为 "ref" 的块并将值从里到外更改。这可能吗?

<#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>

FreeMarker 模板在执行时不断写入输出,因此如果您已经打印了一段输出,那么它就不再由 FreeMarker 控制了。 (它可能仍然位于 Writer 后面的某个缓冲区中,但 FreeMarker 并不知道这一点。)你可以做的是首先生成依赖部分(fo:table-body),但是捕获它而不是打印它,如 <#assign tableBody><fo:table-body...>...</fo:table-body></#assign>,然后像往常一样生成依赖部分(fo:block),然后打印捕获的部分(${tableBody},或 <#noescape>${tableBody}</#noescape>,具体取决于哪种自动-转义你使用)。