2011-06-14 9 views
2

私の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プロパティを呼び出すことができません。どんな洞察?

+0

私は同じ問題を抱えています。あなたは解決策を見つけましたか? – KClough

+0

いいえ、私は全くしませんでした。私はちょうど周りの仕事をしなければならなかった。 – mattmc3

答えて

関連する問題