我可以从ftl中的函数调用一个宏吗?

时间:2016-03-23 04:45:10

标签: java freemarker

我有一个函数说

[#function func a]
   [@print_name "john doe"/]
[/#function] 

我有一个宏说

[#macro print_name name]  
  ${name}  
[/#macro]

从函数调用宏是否有效,是否会在页面中打印任何内容?

1 个答案:

答案 0 :(得分:3)

您可以这样做,但如果您只是调用宏,则会以静默方式删除宏输出。通常,如果您需要从函数调用一个宏并将其输出作为函数结果返回,那么就有一些东西在那里。 (从宏调用函数是常见的,但相反的是不是。)但它可行:

[#function func a]
   [#local r][@print_name "john doe"/][/#local]
   [#return r]
[/#function]

请注意,如果您使用带有转义输出格式(如HTML)的2.3.24的自动转义功能,则返回值不会是字符串。然后它将是"标记输出"相反(防止双重逃逸)。