2011-06-14 5 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 #. (BTW - 이것은 튜플에있는 3 개의 항목 중 하나가 .Item 호출과 함께 전달되면 발생하므로 데이터 유형과 관련이 없습니다.)

변수를 만들어 잘 전달할 수 있습니다 ($ one1). 튜플 자체를 전달하고 매크로 ($ item.Item2) 내부의 .Item 속성을 호출 할 수는 있지만 어떤 이유로 매크로에 인수를 전달할 때 .Item 속성을 호출 할 수 없습니다. 어떤 통찰력?

+0

을 저도 같은 문제가 발생하고있다. 혹시 해결책을 찾았습니까? – KClough

+0

아니요, 전 완전히하지 못했습니다. 나는 그저 주변에서 일해야만했다. – mattmc3

답변

관련 문제