这是我在java中的测试
public class person
{
public String name;
public int age;
public String getName() { return name; }
public int getAge() { return age; }
}
在我的函数中,我创建了一些人员对象并将其添加到列表中
ArrayList<person> arr = new ArrayList<person>()
arr.add(person1);
arr.add(person2); etc etc
在我得到的字符串模板组文件中
test(arr) ::= <<
<table>
$arr: {a|
<tr><td>$a.name$</td><td>$a.age$</td></tr>
}$
</table>
>>
这是从我的列表模板中调用的
list (arr) ::= <<
$test(arr)$
... and other page details etc
>>
在 version4 中,我收到带有一些堆栈跟踪的模板未找到消息,如下所示
Caused by: java.lang.ClassCastException: java.util.ArrayList
at org.antlr.runtime.tree.RewriteRuleTokenStream.nextNode(RewriteRuleTokenStream.java:58)
at org.stringtemplate.v4.compiler.STParser.subtemplate(STParser.java:1563)
at org.stringtemplate.v4.compiler.STParser.mapTemplateRef(STParser.java:3692)
但我可以按如下方式列出一个数组,并以字符串格式打印对象表示(我也可以使用映射 - 即键值对也可以)
在字符串模板中
test(arr) :: =<<
<p>
$arr; seperator="</br>"$
</p>
>>
我们如何迭代对象列表以使用 V4 中的字符串模板 grop 打印字段值我是否以错误的格式/语法使用它?
任何帮助/点都会很棒
注意:我们使用 new STGroupString("", templateGroup, '$', '$'); 将 $ 设置为分隔符