Вызовите Java-методы с параметрами массива из Velocity - PullRequest
0 голосов
/ 01 апреля 2012

Я пишу файл шаблона скорости (.vm), в котором я получаю этот класс с отражением:

#set ($assetEntryQuery = $portal.getClass().forName("com.liferay.portlet.asset.service.persistence.AssetEntryQuery").getConstructor().newInstance())

, затем я создаю массив и вызываю эту функцию:

#set ($arr = ['$category.getCategoryId()'])
$assetEntryQuery.setStart(0)
$assetEntryQuery.setEnd(6)
$assetEntryQuery.setAllCategoryIds($arr)

К сожалению, setAllCategoryIds принимает массив long [], а не массив Velocity.На веб-сайте я печатаю «$ assetEntryQuery.setAllCategoryIds ($ arr)».Кто-нибудь из вас знает, как заставить его работать?

1 Ответ

0 голосов
/ 01 апреля 2012

Вы должны удалить одиночную кавычку вокруг ['$ category.getCategoryId ()'], ​​чтобы иметь это: [$ category.getCategoryId ()]

РЕДАКТИРОВАТЬ В качестве хака и обходного пути это решило проблему:

$assetEntryQuery.setAllCategoryIds($category.getCategoryId())

Поскольку скорость поддерживает переменные в методах (см. Комментарии в этом ответе).

...