2012-05-02 3 views
0

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, '$', '$');

+0

вида работы сейчас (. Не проверяли все испытания с массивом строк с фигурными скобками) кажется его не ошибка в stringtemplate .. ее antlr - не уверен, где эта проблема исходит от , мы используем antlr 3.4..runtime. , но когда я вернулась к версии 3.2, она сработала. – pvee

ответ

2

У вас не хватает завершающий $ на вашем выражение: $ a.age должно быть $ a.age $

+0

Спасибо, я пропустил $, когда я ввел свой вопрос в stackoverflow. отредактировал его сейчас. все еще не могу загрузить шаблон (см. отредактированный вопрос) – pvee