2012-05-02 1 views
0

은을 heres 내 기능에서 자바문제는 반복

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> 
>> 

이것은 나의 목록에서 불러 온다. 버전 4에서 판

list (arr) ::= << 

$test(arr)$ 

... and other page details etc 
>> 

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을 사용하여 필드 값을 인쇄 할 개체의 목록을 반복하는 방법을 내가 잘못된 형식/구문으로 사용하고 있습니까?

어떤 도움/포인트

는 greateful

참고가 될 것입니다 : 우리는 새로운 STGroupString를 사용하여 구분 기호로 $를 설정 ("", templateGroup을, '$', '$');

+0

친절해야 $의 a.age을 (.하지 테스트 모든 중괄호 문자열 배열 테스트는) 보인다는하지 stringtemplate의 버그 .. antlr -이 문제가 어디에서 발생했는지 확실하지 않다면 에서 antlr 3.4..runtime을 사용하고 있습니다. 하지만 3.2 버전으로 롤백했을 때 제대로 작동했습니다. – pvee

답변

2

당신은 당신의 발현에 종단 $ 누락 : 현재 작업의 $ a.age $

+0

감사합니다. stackoverflow에 내 질문을 입력했을 때 $를 놓쳤습니다. 지금 편집했습니다. 여전히 템플릿을로드 할 수 없습니다 (편집 된 질문 참조). – pvee