StringTemplate找不到getter

时间:2013-03-01 17:05:33

标签: java stringtemplate stringtemplate-4

我使用的是ST-4.0.7.jar,我的模板如下所示:

backtrack_result(btresult) ::=<<
    <backtrack-result>
        <pattern id="$btresult.pattern.id$">$btresult.pattern.description$</pattern>
        <file>$btresult.file.file.path$</file>
        <line>$btresult.codeline.lineNr$</line>
        <method>$btresult.codeline.method.name$</method>        
    </backtrack-result>
>>

然而,当我查看输出文件时,我得到了

<method></method>

在BTResult:

public CodeLineInterface getCodeline() {
    return cl;
} 

在CodeLine中:

public MethodInterface getMethod() {
    return method;
}

方法:

public String getName() {
    return name;
}

我在getMethod方法的代码行对象中设置了一个断点,它永远不会被调用。 所以我得出结论,不知何故,stringtemplate在解决正确的getter方面存在问题。

我添加了一个STErrorListener,发现ST抛出以下错误:

STReportGenerator  - context [/report /backtrack_results /backtrack_result] 5:19 no such property or can't access: ju.no.need.toknow.BTResult.method
Caused by: org.stringtemplate.v4.misc.STNoSuchPropertyException: no such property: ju.no.need.toknow.BTResult.method
    at org.stringtemplate.v4.misc.ObjectModelAdaptor.throwNoSuchProperty(ObjectModelAdaptor.java:106)
    at org.stringtemplate.v4.misc.ObjectModelAdaptor.lookupMethod(ObjectModelAdaptor.java:99)
    at org.stringtemplate.v4.misc.ObjectModelAdaptor.getProperty(ObjectModelAdaptor.java:67)
    at org.stringtemplate.v4.Interpreter.getObjectProperty(Interpreter.java:1158)

特别让我感到困惑的是:为什么当模板说它应该得到btresult时,它会尝试解析为BTReult.method。 codeline .method.name?

1 个答案:

答案 0 :(得分:2)

行。这是我自己的愚蠢:当我修复我的模板时,代码实际上使用了一个旧模板,所以在我看来我的所有修复都不起作用。 OSI第8层问题; - )