我正在一个 Java 项目中使用 Freemarker。我已经定义了一个自定义指令,如 @mycustomdirective
此自定义指令是否支持其他指令作为参数?
IE :
<@mycustomdirective parameter="<@othercustomdirective parameter2="..." />" />
谢谢指教。
我正在一个 Java 项目中使用 Freemarker。我已经定义了一个自定义指令,如 @mycustomdirective
此自定义指令是否支持其他指令作为参数?
IE :
<@mycustomdirective parameter="<@othercustomdirective parameter2="..." />" />
谢谢指教。
不支持;您只能#function
在表达式中调用 -s 和方法(无论是参数值还是其他)。
这实际上是有原因的:旨在输出标记的指令,并且假定函数/方法生成纯文本(或数字、布尔值等)。因此,当您插入带有 的表达式时${exp}
,它会自动转义(通过#escape
ATM ......所以它是“半自动的”),而指令调用则不是,所以区别很重要。参数值是表达式,因此,它们意味着非标记,当然,虽然可以将非标记插入到标记中(通过转义),但从根本上说是不可能的。
但是,如果您真的想在表达式中传递指令输出,则有 hack:
<#assign captured><@myotherdirective /></#assign>
<@mydirective parameter=captured />