私は 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 式が機能しないように感じます。
誰かが私が間違っていることを教えてもらえますか?