NVelocityマクロパラメーターは評価していません
質問
NVelocityテンプレート内にインライン関数(メソッド)を作成したいと考えています。これに対する解決策は、使用することです ベロシマクロ. 。そこで、テストするために次のテンプレートをock笑しました。
#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
私の基本モデルオブジェクトであり、この例には1つのプロパティが含まれています。 Items
, 、 これは List(Of Tuple(Of String, Integer, Date))
. 。 SOのようなテストデータが入力されています:
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/3/2003#まで評価する代わりに、文字通り「$ item.item3」です。 (ところで - これは、タプルの3つのアイテムのいずれかで発生します。 .Item
電話をかけるので、データ型ではありません)。
変数を作成して、それをうまく渡すことができます($ one1)。タプル自体を渡して、マクロ内の.itemプロパティ($ item.item2)を呼び出すことができますが、何らかの理由で電話することはできません .Item
マクロに引数を渡すときのプロパティ。洞察はありますか?
解決
NVelocityマクロサポートは限られているようです。
http://www.castleproject.org/others/nvelocity/problems.html#macros
別の方法は、ヘルパーを使用することです。
所属していません StackOverflow