Freemarker中的嵌套指令参数

时间:2013-05-27 20:57:04

标签: java freemarker directive

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

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

即:

  

< @mycustomdirective parameter =“< @othercustomdirective parameter2 =”...“/>” />

谢谢你的建议。

1 个答案:

答案 0 :(得分:2)

不支持;你只能在表达式中调用#function - s和方法(无论是参数值还是别的东西)。

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

但是如果你真的想在表达式中传递指令输出,那就是黑客:

<#assign captured><@myotherdirective /></#assign>
<@mydirective parameter=captured />