Heres мой тест в JavaПроблема с Antlr StringTemplate V4 ArrayList итерация
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>
>>
Как мы итерируем список объектов для печати значений полей, используя строковый шаблон grop в V4 Я использую его в неправильном формате/синтаксисе?
любой помощи/пунктов будет greateful
примечания: мы устанавливаем $ в качестве разделителей с использованием новых STGroupString ("", templateGroup, '$', '$');
вида работы сейчас (. Не проверяли все испытания с массивом строк с фигурными скобками) кажется его не ошибка в stringtemplate .. ее antlr - не уверен, где эта проблема исходит от , мы используем antlr 3.4..runtime. , но когда я вернулась к версии 3.2, она сработала. – pvee