Java 我可以从ftl中的函数调用宏吗

Java 我可以从ftl中的函数调用宏吗,java,freemarker,Java,Freemarker,我有一个功能说 [#function func a] [@print_name "john doe"/] [/#function] 我有话要说 [#macro print_name name] ${name} [/#macro] 从函数中调用宏是否有效,它是否会打印页面中的任何内容?您可以这样做,但如果您只调用宏,宏输出将被自动删除。通常,如果需要从函数中调用宏并将其输出作为函数结果返回,则会出现问题。(从宏调用函数是常见的,但反之则不然。)但这是可行的: [#funct

我有一个功能说

[#function func a]
   [@print_name "john doe"/]
[/#function] 
我有话要说

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

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

您可以这样做,但如果您只调用宏,宏输出将被自动删除。通常,如果需要从函数中调用宏并将其输出作为函数结果返回,则会出现问题。(从宏调用函数是常见的,但反之则不然。)但这是可行的:

[#function func a]
   [#local r][@print_name "john doe"/][/#local]
   [#return r]
[/#function]
请注意,如果将2.3.24的自动转义功能与转义输出格式(如HTML)一起使用,则返回值将不是字符串。然后它将改为“标记输出”类型(以防止双重转义)