25

次のような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

他に方法はありますか?

4

8 に答える 8

27

Velocity 1.6を使用できます$array。1という名前の配列の場合、単純に実行できます$array.get($index)

今後のVelocity1.7では、$array[$index](およびと同様$list[$index]$map[$key])実行できるようになります。

于 2009-02-02T22:58:32.357 に答える
10

配列をListusingでラップできArrays.asList(T... a)ます。新しい List オブジェクトは元の配列によってサポートされるため、無駄にコピーを割り当てることはありません。新しい List に加えられた変更も、配列に反映されます。

次に$list.get(int index)、Velocity でオブジェクトを取得するために使用できます。

配列から 1 つまたは 2 つのオブジェクトだけを取得する必要がある場合は、 を使用Array.get(Object array, int index) して配列から項目を取得することもできます。

于 2008-10-10T15:56:52.513 に答える
2
String[] arr = new String[] {"123", "doc", "projectReport.doc"}; 

私の意見では、アクセスする自然な方法は次のとおりです。

 #set($att_id = $arr[0]) 
 #set($att_type = $arr[1]) 
 #set($att_name = $arr[2]) 

速度$array.get("arr", 1)のように配列から直接値を取得する方法がないため、この値は を使用して取得できます。 それがうまくいくことを願っています:)$att_id = $arr[0]

于 2009-12-22T06:22:06.100 に答える
1

値 1 で始まる暗黙的なカウンター $velocityCount があるため、独自のカウンターを作成する必要はありません。

于 2009-08-21T00:33:12.333 に答える
1

Brian の答えは確かに正しいですが、次の Velocity 1.6 が配列を直接サポートしていることを知りたいかもしれません。詳細については、速度のドキュメントを参照してください。

于 2008-10-13T19:34:38.300 に答える
0

私は、velocity-tools.jarのListToolを使用することになりました。配列の要素にアクセスし、そのサイズを取得するメソッドがあります。

于 2009-05-13T06:01:06.407 に答える
0

同じ質問があり、別のスレッドで回答がありました

#set ( $Page = $additionalParams.get('Page') )
#set ( $Pages = [] )
#if ( $Page != $null && $Page != "" )
    #foreach($i in $Page.split(";"))
        $Pages.add($i)
    #end
#end

Confluence / Velocity テンプレートの配列インデックス

于 2014-12-10T13:19:02.953 に答える