我目前正在使用Rythm创建一些片段 - 结合AST,因为模板依赖于 Java 文件。
调用模板按预期工作。有一种意想不到的行为。我想递归调用模板,但似乎这是不可能的。
Foo.html 模板
@args String someString, boolean recursion
Calling foo template with recursion: @recursion
@if(recursion) {
A recursion was requested: @recursion
@foo(someString, false)
}
请注意,根据本示例的意图,这仅提供 1 级递归。但是,我想稍后使用条件而不是在行false
内。@foo(someString, false)
您可以通过简单地将提供的示例复制并粘贴到foo.html
.
错误信息
The method foo(String, boolean) is undefined for the type Cfoo_html__R_T_C__
Template: /foo.html
Relevant template source lines:
-------------------------------------------------
1: @args String someString, boolean recursion
2:
3: Calling foo template with recursion: @recursion
4: @if(recursion) {
5: A recursion was requested: @recursion
>> 6: @foo(someString, false)
7: }
/*
* Omitted for the sake of readability.
*/
现在,错误似乎与递归无关。不过,这是我在 Eclipse 中看到的错误消息。
我想,在调用模板时,不可能在其自身内部调用它,因为 Rythm 只查找其他模板 - 或者看起来是这样。
使用上面的链接访问Rythm Fiddle,将代码放在里面bar.html
而不是foo.html
- 将第 6行从更改@foo(someString, false)
为@bar(someString, false)
。
现在,将以下行放入foo.html
:
@bar("foo", true)
这样做时,错误变为:
java.lang.SecurityException: java.util.concurrent.TimeoutException
我认为这证明了我上面的假设,因为 Rythm 现在似乎找到了模板(或方法,即)。这基本上就是我卡住的地方。
所以,问题是:有没有办法根据某些条件递归调用 Rythm 模板?
我也愿意接受其他建议,因为递归通常可以以非递归方式处理。我只是想避免重复的代码。