2011-08-02 16 views
15

Próbuję dowiedzieć się, jak zwrócić wartość z prędkością makro rozmowy i przypisać go do varaibleWywołanie funkcji w makro Velocity szablonu

moja funkcja makro wygląda mniej więcej tak. jej raz na wspólne dla makr plików

#macro(getBookListLink, $readingTrackerResult) 
    $readingTrackerResult.getBookListLink() 
#end 

Jestem należy przypisać wynik tego makra do zmiennej w innej prędkości pliku szablonu

próbowałem coś takiego

#set($book_list_link = #getBookListLink($readingTrackerResult)) 

ale nie działa. Próbowałem z #, $ iz niczym przed funkcją getBookListLink. ale nic nie działało. Nie mogę wrócić z makra? coś nie tak z moim makrem?

Ale, jako takie, jeśli w pliku html wywołuję #getBookListLink ($ readingTrackerResult) oddzielnie. to działa i mogę wydrukować wynik do interfejsu użytkownika. Ale nie można przypisać do zmiennej.

+0

Mam problem z dodatkowymi odstępami, gdy wykonuję to połączenie. Niestety, nawet użycie lewy z komentarzami ('## '), na końcu linii, nie zadziałało. – Dherik

Odpowiedz

25

Makra nie są funkcjami; służą do renderowania danych wyjściowych. Jednakże, jeśli nie masz nic przeciwko utracie typ i coraz wynik jako tekst ...

#set($book_list_link = "#getBookListLink($readingTrackerResult)") 
+0

@ nathan..it działa, dziękuję –

+2

W przypadku, gdy funkcja oczekuje argumentu łańcuchowego, musimy użyć w następujący sposób: '#set ($ book_list_link =" #getBookListLink ('string_argument') ")") –

5

Aby pozbyć się pustych przestrzeni i linii używać komentarzy multi-line (#* comment *#):

#macro(myMacro $param)#* 
    *#the_return_value#* 
*##end 
-1

Lub po prostu napisać wszystko na tej samej linii:

#macro(myMacro $param) the_return_value #end 
0

Zamiast żyć z ograniczeniami smyczkowych dla „wartości”, obie korzystnie zewnętrznie zdefiniowana zmienna wynik może być przekazywane „na drodze odniesienia e ', np .:

#macro(getBookListLink $inTrackerResult $outBookListLink) 
    #if ($outBookListLink) 
     #set ($outBookListLink = $inTrackerResult.getBookListLink()) 
    #end 
#end 

#set ($myLink = "") 
#getBookListLink($myTrackerResult $myLink) 
myBookListLink = "$myLink"<br/>