我是 FreeMarker 的新手。到目前为止,我只使用过 XSLT,我想看看 FreeMarker 作为替代品。
我有以下 ftl 模板(仅相关部分)
<#assign deelnemer = body.document[0].form[0].panel[0]>
<#assign UPO = body.document[0].form[0].pensioenGegevens[0]>
...
<div>Document ${body.document.@docId}</div>
<h1>Wijzig gebruiker ${deelnemer.field["@name='name'"]}</h1>
以及以下内容
<document docId="1">
<form>
<panel id="deelnemer">
<field type="text" name="name" id="name">Jansen</field>
<field type="text" name="dateOfBirth" id="dateOfBirth">02-07-1971</field>
<field type="text" name="dateOfEnlistment" id="dateOfEnlistment">01-01-2013</field>
<field type="hidden" name="OIDDln" id="OIDDln">1</field>
<field type="submit" id="submit" name="submit" nextPage="response2">Wijzig</field>
</panel>
<pensioenGegevens/>
</form>
</document>
我希望在使用表达式 ${deelnemer.field["@name='name'"]} 时获得 Jansen 的值,但是我得到了一个异常而不是这个
无法对 5 个节点的节点集执行 XPath 查询。期望单个节点。
有问题的指令:
==> ${body.document[0].form[0].panel[0].field["@name='name'"][0]} [在 deelnemer.ftl 的第 23 行第 28 列]
程序员的 Java 回溯:
freemarker.template.TemplateModelException:无法对 5 个节点的节点集执行 XPath 查询。期望单个节点。
如果我使用 deelnemer.field[0],我会看到 Jansen 这个名字按预期出现。所以我觉得给定的 XPath 表达式不起作用。
有人可以告诉我我做错了什么吗?