Ответ 1
Вы можете использовать Velocity 1.6: для массива с именем $array
можно просто сделать $array.get($index)
.
В предстоящей Velocity 1.7 можно выполнить $array[$index]
(а также $list[$index]
и $map[$key]
).
У меня есть массив 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]
).
Вы можете обернуть массив в List
, используя Arrays.asList(T... a)
. Новый объект List поддерживается исходным массивом, поэтому он не расточительно выделяет копию. Даже изменения, внесенные в новый список, будут передаваться обратно в массив.
Затем вы можете использовать $list.get(int index)
, чтобы получить объекты в Velocity.
Если вам нужно получить только один или два объекта из массива, вы также можете использовать Array.get(Object array, int index)
для получения элемента из массива.
существует неявный счетчик $velocityCount, который начинается со значения 1, поэтому вам не нужно создавать свой собственный счетчик.
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]
в скорости.
Надеюсь, он работает:)
Брайан ответ действительно правильный, хотя вам, возможно, хотелось бы знать, что предстоящий Velocity 1.6 имеет прямую поддержку массивов; дополнительную информацию можно найти в Документация по скорости.
Я закончил использование ListTool из файла velocity-tools.jar. Он имеет методы доступа к элементам массива и также получает его размер.
У меня есть тот же вопрос, и он получил ответ на другой поток
#set ( $Page = $additionalParams.get('Page') )
#set ( $Pages = [] )
#if ( $Page != $null && $Page != "" )
#foreach($i in $Page.split(";"))
$Pages.add($i)
#end
#end
Скорость 1.6
$myarray.isEmpty()
$myarray.size()
$myarray.get(2)
$myarray.set(1, 'test')