1

我正在一个 Java 项目中使用 Freemarker。我已经定义了一个自定义指令,如 @mycustomdirective

此自定义指令是否支持其他指令作为参数?

IE :

<@mycustomdirective parameter="<@othercustomdirective parameter2="..." />" />

谢谢指教。

4

1 回答 1

2

不支持;您只能#function在表达式中调用 -s 和方法(无论是参数值还是其他)。

这实际上是有原因的:旨在输出标记的指令,并且假定函数/方法生成纯文本(或数字、布尔值等)。因此,当您插入带有 的表达式时${exp},它会自动转义(通过#escapeATM ......所以它是“半自动的”),而指令调用则不是,所以区别很重要。参数值是表达式,因此,它们意味着非标记,当然,虽然可以将非标记插入到标记中(通过转义),但从根本上说是不可能的。

但是,如果您真的想在表达式中传递指令输出,则有 hack:

<#assign captured><@myotherdirective /></#assign>
<@mydirective parameter=captured />
于 2013-05-27T22:49:04.967 回答