私のNVelocityテンプレート内にインライン関数(メソッド)を作成したいと考えています。これに対する解決策は、Velocimacrosを使用するように見えます。だから、私はテストに次のテンプレートを嘲笑:NVelocityマクロパラメータが評価されない
#macro(getOutput $one $two $three)
<td>$one</td>
<td>$two.Item2</td>
<td>$three</td>
#end
<table>
#foreach($item in $mdl.Items)
<tr>
#set($one1 = $item.Item1)
#getOutput($one1 $item $item.Item3) ## item.Item3 won't evaluate!
</tr>
#end
</table>
$mdl
は、この例ではList(Of Tuple(Of String, Integer, Date))
ある一つの特性、Items
を、含まれている私のベースモデルオブジェクトです。そのようなテストデータが取り込ま:私はテンプレートを実行すると
Dim items As New List(Of Tuple(Of String, Integer, DateTime))
With items
.Add(New Tuple(Of String, Integer, DateTime)("One", 1, #1/1/2001#))
.Add(New Tuple(Of String, Integer, DateTime)("Two", 2, #2/2/2002#))
.Add(New Tuple(Of String, Integer, DateTime)("Three", 3, #3/3/2003#))
End With
、私がいる問題は、マクロパラメータ$three
からの出力は、/の代わりに3位に評価の文字通り「$ item.Item3」であるということです3/2003#。 (これは、.Item
呼び出しで渡された場合、タプルの3つの項目のいずれかで発生するため、データ型に関するものではありません)。
私は変数を作り、ちょうど良い($ one1)を渡すことができます。タプル自体を渡し、マクロ($ item.Item2)内の.Itemプロパティを呼び出すことができますが、何らかの理由でマクロに引数を渡すときに.Item
プロパティを呼び出すことができません。どんな洞察?
私は同じ問題を抱えています。あなたは解決策を見つけましたか? – KClough
いいえ、私は全くしませんでした。私はちょうど周りの仕事をしなければならなかった。 – mattmc3