是否可以在模板中获取变量列表并使用列表填充它们?我希望我的用户创建他们的模板,这意味着我不会事先知道哪些变量可用?
编辑:
在我的模板中,用户将决定打印什么。如
$用户 $最新
但从我的应用程序中,我不知道模板中使用了哪些变量。我想获得一个列表,例如 [users latest],其中包含模板中的所有变量,以便我可以根据用户规范填写它们。
您可以通过呈现模板并使用构建列表的 ReferenceInsertionEventHandler 来收集列表。但是,问题在于模板是否具有以下内容:
#if( $foo ) $bar #else $woogie #end
您的事件处理程序只会看到 $bar 或 $woogie,而不是两者。
这个不受支持的(可能是过时的)类可能会有所帮助:
http://svn.apache.org/viewvc/velocity/engine/branches/1.x/experimental/templatetool/
我认为没有一种简单的方法可以在不覆盖某些速度等级的情况下做到这一点。
以下是我将如何做到的一些选项:
<!--%%__VARS__%%users,latest%%__VARS__%%-->
这里有一些讨论和想法来解决这个问题。首选选项基本上是为模板生成的 AST 实现 walker。不是微不足道的。
如果您不记得的话,我找到了这个衬里(将其保存为片段)。
## #foreach($key in $context.keys) <pre> $key</pre> #end
希望能帮助到你 ...
哦,删除##
评论