43

VTL で配列を作成し、内容を配列に追加する方法は? また、配列の内容をインデックスで取得する方法は?

4

3 に答える 3

61

Apache Velocity User Guideによると、割り当ての右側は次のタイプにすることができます

  • 変数参照
  • リスト項目
  • 文字列リテラル
  • プロパティ参照
  • メソッドリファレンス
  • 数値リテラル
  • 配列リスト
  • 地図

次のような式を使用して、配列のすべてのニーズを満たす空のリストを Apache Velocity テンプレートで作成できます。

#set($foo = [])

または値を初期化します。

#set($foo = [42, "a string", 21, $myVar])

次に、Java add メソッドを使用して要素を追加します。

$foo.add(53);
$foo.add("another string");

ただし、リスト タイプの Java .add() メソッドはブール値を返すため、リストに要素を追加すると、Velocity は "追加」機能。

簡単な回避策は、add 関数の結果を変数に代入することです。

#set($bar = $foo.add(42))

インデックス番号を使用してリストの要素にアクセスできます。

<span>$foo[1]</span>

上記の式は、テキスト「a string」を含むスパンを示します。ただし、リストの要素にアクセスする最も安全な方法は、foreach ループを使用することです。

于 2012-07-27T07:04:29.703 に答える
13

配列の作成は簡単です:

#set($array = [])

要素を配列に入れるのも簡単です。

$array.add(23)

配列から要素を取得する方法は、Velocity のバージョンによって異なります。Velocity 1.6 では、使用する必要があります

$array.get($index)

Velocity 1.7 以降、古典的な形式を使用できます。

$array[$index]
于 2016-06-30T07:59:22.887 に答える
1

VTL で配列を作成していませんが、配列を VTL コンテキストに渡して使用しました。VTL では、配列の内容をインデックスで取得することはできません。foreach のみを使用します。例として、このコードは動的 SQL 生成 VTL スクリプトからコピーされます。

#foreach( $col in $Columns ) SUM($col.DBColumn) AS ''$col.Name''#if($velocityCount!=$Columns.Count),   #end  #end 

このため、2D 配列も使用できません。2 つのオブジェクトを連続して格納する配列が必要なときは、新しいクラスを定義し、そのクラスのオブジェクトを 1 次元配列に配置するという回避策を使用しました。

于 2011-07-12T18:47:51.500 に答える