0

これが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
>>

バージョン4では、次のようにスタックトレースを含むテンプレートが見つかりませんというメッセージが表示されます

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を使用してフィールド値を出力するにはどうすればよいですか?間違った形式/構文で使用していますか?

ヘルプ/ポイントは素晴らしいでしょう

注:新しいSTGroupString( ""、templateGroup、'$'、'$');を使用して$を区切り文字として設定します。

4

1 に答える 1

2

式の終了$が欠落しています:$a.ageは$a.age$である必要があります

于 2012-05-03T18:26:26.257 に答える