在Velocity模板中调用宏功能

18 java apache velocity

我试图弄清楚如何从速度宏调用返回一个值并将其分配给变量

我的宏函数看起来像这样.它曾经是共同的共享宏文件

#macro(getBookListLink, $readingTrackerResult)
   $readingTrackerResult.getBookListLink()
#end
Run Code Online (Sandbox Code Playgroud)

我需要将此宏的结果分配给另一个速度模板文件中的变量

我试过这样的事

#set($book_list_link = #getBookListLink( $readingTrackerResult ))
Run Code Online (Sandbox Code Playgroud)

但没有奏效.我尝试使用#,$并且在函数getBookListLink前面没有任何内容.但没有任何效果.我不能从宏回来吗?我的宏出了什么问题?

但是,如果我在html文件中单独调用#getBookListLink($ readingTrackerResult).它工作,我可以将结果打印到UI.但是无法分配给变量.

Nat*_*bna 29

宏不是函数; 它们用于渲染输出.但是,如果您不介意丢失类型并将结果作为文本...

#set( $book_list_link = "#getBookListLink( $readingTrackerResult )" )
Run Code Online (Sandbox Code Playgroud)

  • 如果函数需要一个字符串参数,那么我们需要使用如下:`#set($ book_list_link ="#getBookListLink('string_argument')")` (3认同)

小智 7

要删除空格和空行,请使用多行注释(#* comment *#):

#macro( myMacro $param )#*
  *#the_return_value#*
*##end
Run Code Online (Sandbox Code Playgroud)