我使用的是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方法设置了一个断点,并且它从未被调用。因此,我得出结论,在某种程度上,字符串模板在解决正确的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.codeline.method.name?时,它为什么要尝试解析到BTReult.method?
发布于 2013-03-06 12:27:24
好的。这是我自己的愚蠢之处:虽然我确实修复了我的模板,但代码实际上使用了一个旧模板,所以在我看来,我的所有修复程序都不起作用。OSI第8层问题;
https://stackoverflow.com/questions/15163042
复制相似问题