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