如何使用 Freemarker 匹配多个节点?
How do you match more than one node using Freemarker?
我的 FreeMarker FTL 代码如下:
<a class="launch" href="${item.target-url}">View Now</a>
我从以下XML中提取了一个片段:
<item>
<target-url>www.test.com/jimmy</target-url>
</item>
<item>
<target-url></target-url>
</item>
<item>
<target-url></target-url>
</item>
我认为这应该有效。
但是当我查看我的 html 页面时,出现以下错误:
尝试使用 FTL 模板转换时出现异常! freemarker.core.NonNumericalException:对于“-”左手操作数:需要一个数字,但这被评估为序列+哈希(包装器:f.e.dom.NodeListModel):==> item.target [在模板中"marketing/widgets/freemarker/newblogpost-update.ftl" at line 31, column 105] ---- 提示:此 XML 查询结果不能用作字符串,因为它必须恰好包含 1 个 XML 节点,但它包含0 个节点。即,构造 XML 查询未找到匹配项。 ---- ---- FTL 堆栈跟踪(“~”表示与嵌套相关):- 失败于:${item.target - url?size != 0} [in template "marketing/widgets/freemarker/newblogpost-update.ftl" 在第 31 行,第 103 列] ----
我认为我收到此错误是因为我的 XML 包含多个不包含数据的节点 ()。我的一些节点可能包含数据,但不是全部。有什么办法可以解决这个问题吗?
你收到一个错误,因为你有 -
登录 XML 标签并且 FreeMarker 将其视为减号:${item.target - key}
所以你必须使用那个结构:
${item["target-url"]}
我的 FreeMarker FTL 代码如下:
<a class="launch" href="${item.target-url}">View Now</a>
我从以下XML中提取了一个片段:
<item>
<target-url>www.test.com/jimmy</target-url>
</item>
<item>
<target-url></target-url>
</item>
<item>
<target-url></target-url>
</item>
我认为这应该有效。
但是当我查看我的 html 页面时,出现以下错误:
尝试使用 FTL 模板转换时出现异常! freemarker.core.NonNumericalException:对于“-”左手操作数:需要一个数字,但这被评估为序列+哈希(包装器:f.e.dom.NodeListModel):==> item.target [在模板中"marketing/widgets/freemarker/newblogpost-update.ftl" at line 31, column 105] ---- 提示:此 XML 查询结果不能用作字符串,因为它必须恰好包含 1 个 XML 节点,但它包含0 个节点。即,构造 XML 查询未找到匹配项。 ---- ---- FTL 堆栈跟踪(“~”表示与嵌套相关):- 失败于:${item.target - url?size != 0} [in template "marketing/widgets/freemarker/newblogpost-update.ftl" 在第 31 行,第 103 列] ----
我认为我收到此错误是因为我的 XML 包含多个不包含数据的节点 ()。我的一些节点可能包含数据,但不是全部。有什么办法可以解决这个问题吗?
你收到一个错误,因为你有 -
登录 XML 标签并且 FreeMarker 将其视为减号:${item.target - key}
所以你必须使用那个结构:
${item["target-url"]}