私はJavaなどの配列を持っています:
String[] arr = new String[] {"123","doc","projectReport.doc"};
私の意見では、アクセスする自然な方法は次のようになります。
#set($att_id = $arr[0])
#set($att_type = $arr[1])
#set($att_name = $arr[2])
しかし、それは機能していません。この回避策が付属しています。しかし、このような簡単な作業には、コードが多すぎます。
#set($counter = 0)
#foreach($el in $arr)
#if($counter==0)
#set($att_id = $el)
#elseif($counter==1)
#set($att_type = $el)
#elseif($counter==2)
#set($att_name = $el)
#end
#set($counter = $counter + 1)
#end
他に方法はありますか?
Velocity 1.6を使用できます。_$array
_という名前の配列の場合、$array.get($index)
を実行するだけで済みます。
次のVelocity 1.7では、_$array[$index]
_(および_$list[$index]
_および_$map[$key]
_と同様)を実行できるようになります。
Arrays.asList(T... a)
を使用して、配列を List
でラップできます。新しいListオブジェクトは元の配列によってサポートされているので、コピーを無駄に割り当てません。新しいリストに加えられた変更であっても、配列に反映されます。
次に、$list.get(int index)
を使用して、Velocityでオブジェクトを取得できます。
配列から1つまたは2つのオブジェクトを取得する必要がある場合は、 Array.get(Object array, int index)
を使用して配列から項目を取得することもできます。
_String[] arr = new String[] {"123", "doc", "projectReport.doc"};
_
私の意見では、アクセスする自然な方法は次のようになります。
_ #set($att_id = $arr[0])
#set($att_type = $arr[1])
#set($att_name = $arr[2])
_
速度で_$att_id = $arr[0]
_のような配列から直接値を取得する方法がないため、$array.get("arr", 1)
を使用してこの値を取得できます。
うまくいくことを願っています:)
速度1.6
$myarray.isEmpty()
$myarray.size()
$myarray.get(2)
$myarray.set(1, 'test')
値1で始まる暗黙的なカウンター$ velocityCountがあるため、独自のカウンターを作成する必要はありません。
ブライアンの答え は確かに正しいですが、次のVelocity 1.6では配列が直接サポートされることを知りたいかもしれません。詳細は Velocityのドキュメント を参照してください。
同じ質問があり、別のスレッドで回答されました
#set ( $Page = $additionalParams.get('Page') )
#set ( $Pages = [] )
#if ( $Page != $null && $Page != "" )
#foreach($i in $Page.split(";"))
$Pages.add($i)
#end
#end
最終的に、velocity-tools.jarの ListTool を使用しました。配列の要素にアクセスし、そのサイズを取得するメソッドがあります。