【发布时间】:2013-07-24 11:09:47
【问题描述】:
我只用了一周的 StringTemplate 4,所以这可能是我正在做的事情,但我似乎无法使 <if> 工作。
我使用的是 4.02(因为这是 Maven 存储库中的最新版本)。我有一门课叫Variable。这是一个sn-p:
class Variable
{
...
public boolean isArray()
{
return _bIsArray;
}
}
我有一个有一行的模板(分隔符是$,$):
$if(x.isArray)$ $ArrayAdd(x, className)$ $endif$
如果我删除if 并简单地让它为所有内容执行$ArrayAdd(...)$,那么ArrayAdd 显然会被执行。然后我把$if$放回去。我还在isArray()中放了一个打印语句,isArray()正在执行并在大多数情况下返回false,但偶尔会返回true(确切地说我预期的情况)。但是,$ArrayAdd 永远不会在 $if$ 中执行。
我查看了痕迹(我不擅长阅读)并得到:
declareSetGet:0227: load_local 0 stack=[ ], calls=ObjectClass _sub1
declareSetGet, sp=-1, nw=0
declareSetGet:0230: load_prop #25:"isArray" stack=[
altLocation<CUSTOM>::Array<1>::Custom<altLocationObj> ], calls=ObjectClass _sub1
declareSetGet, sp=0, nw=0
declareSetGet:0233: brf 254 stack=[ null ], calls=ObjectClass _sub1
declareSetGet, sp=0, nw=0
ObjectClass:0121: newline stack=[ ], calls=ObjectClass, sp=-1, nw=959
ObjectClass:0122: write_str #15:"}" stack=[ ], calls=ObjectClass, sp=-1, nw=0
这是我希望执行ArrayAdd 模板的情况之一。显然不是。
谁能告诉我我错过了什么?
【问题讨论】:
-
StringTemplate 4.0.7 在 Maven 中心:search.maven.org/#search%7Cga%7C1%7Ca%3A%22ST4%22
标签: if-statement stringtemplate