freemarker - Freemarker 在我的 fo:table-body 之外动态引用标签
问题描述
我无法向您展示整个代码,但以下基本上是我在 fo-table-body 标记内生成动态代码所采取的步骤。
在 inside 的一个阶段<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>
解决方案
FreeMarker 模板在执行时会不断写入输出,因此如果您已经打印了一段输出,那么它不再掌握在 FreeMarker 手中。(它可能仍然位于 后面的某个缓冲区中Writer
,但 FreeMarker 并没有意识到这一点。)虽然您可以做的是首先生成依赖部分 ( fo:table-body
),但是捕获它而不是打印它,例如<#assign tableBody><fo:table-body...>...</fo:table-body></#assign>
,然后生成依赖部分( fo:block
) 像往常一样,然后打印捕获的部分(${tableBody}
或<#noescape>${tableBody}</#noescape>
,具体取决于您使用的自动转义类型)。
推荐阅读
- mongodb - 在 insert_one() 之后使用 $lookup
- python - 为什么在 DJANGO 中扩展 CreateView CBV 时表单返回“方法不允许”
- javascript - 在选中单选按钮之前,必须禁用输入字段
- mysql - 从 sql 中的事件日志表获取步骤持续时间到累积快照事实的有效查询
- javascript - 如果 querySelector 不返回 null,则速记获取 textContent
- typescript - 如何在不使用 TypeORM 中的嵌入实体的情况下将类似的列添加到所有实体?
- model - 如何正确创建递归连接模型和相关输入字段以在 CakePHP 中编辑多连接表结构的数据?
- reactjs - 在 Jest 中使用上下文提供程序包装组件后“找不到存储”
- ruby - 内容类型响应不同
- javascript - 有没有一种好方法可以确保在移动使用它的代码之前创建一个对象?