列出 Freemarker 模板中的所有变量

List all variables in a Freemarker template

我们有一个动态的 Freemarker 模板。我们有 1 个模板,其中包含全局文档结构和带有动态块的不同配置。这些块使用 block.content?interpret.

进行评估

在主模板和块中,我们也有需要填充的变量。我想知道是否可以在生成的模板中提取所有变量的列表?

目前我唯一能想到的就是解析生成的模板并使用正则表达式(或类似的东西)提取 ${(...)} 之间的任何内容。但也许 Freemarker 中有一个我(还)不知道的更好的扩展点。

我们想要变量列表,以便我们可以与用户交流哪些变量需要填写(我们有一个 UI 来输入内容,但我们也想通过以下方式提供元模型一项服务)。

不要认为您可以(也不想)基于模板自动执行此操作。例如,这里使用了哪些变量?

${lt + [a, b, c, d]?min gt 5 ? lte : f}

如果您能够从模板解析 属性 名称,您不知道它是什么类型。

我不知道你的确切用例,但当你用 Java 标记你的问题时,你可能会在某个地方做这样的事情:

template.process(model, writer);

如果您为此使用自定义 Java 对象,它们将是生成文档的理想选择。