私のVelocityテンプレート(.vmファイル)で、VelocityContext
にあるすべての変数または属性をループする方法はありますか?以下のコードを参照して、私はテンプレートに文脈で渡されるすべての果物の名前と数を書きたいと思います。VelocityContextのすべての変数をループする方法は?
Map<String, Object> attribues = ...;
attribues.put("apple", "5");
attribues.put("banana", "2");
attribues.put("orange", "3");
VelocityContext velocityContext = new VelocityContext(attribues);
velocityEngine.mergeTemplate(templateLocation, encoding, velocityContext, writer);
ありがとうございます。私はこれが直接可能ではないという確認を求めていました。しかし、あなたのコードVelocityの 'Foreach.render'メソッドを実行すると、' ConcurrentModificationException'がスローされます。これはあなたのために機能しましたか?私はVelocity 1.7を使用しています。 – Somu
私の例のように、結果を印刷する以外に何かしていますか? 1つの可能性は、 '$ entry'変数がエントリを取得した後にコンテキストに追加され、本当に' ConcurrentModificationException'をトリガすることです。簡単な回避策の1つは 'attributes'変数に単純な' HashMap'の代わりに 'ConcurrentHashMap'を使うことです。 –
いいえ、私は単純なループと印刷の他に何もしていません。興味深いことに 'ConcurrentHashMap'を使うと' StackOverflowError'がスローされます!テンプレートからコンテキストに直接アクセスする方法がないことを確認するために、私はあなたの答えを受け入れます。 – Somu