Liferay - получить идентификатор папки, используя имя папки в скорости

Я знаю, как получить groupid в теме скорости жизни, используя:

#set ($scopeGroupId = $getterUtil.getLong($group_id))

Однако мне также нужно получить идентификатор папки, используя ее имя.
Я некоторое время занимался исследованиями и, похоже, не нашел способа сделать это.

Вопрос. Возможно ли это в liferay 6.2?


person chadct    schedule 26.01.2016    source источник


Ответы (1)


Убедитесь, что вам разрешено использовать serviceLocator, или добавьте в свой portal-ext.properties эту запись:

velocity.engine.restricted.variables=

После этого вы можете использовать этот код в своем шаблоне:

#set ($folderLocalService =$serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFolderLocalService"))
#set ($folderId = $folderLocalService.getFolder($groupId,0,"folder_name").getFolderId())

$folderId 

Или вы можете использовать другой метод из DLFolderLocalService.

person glw    schedule 26.01.2016
comment
он не работает, он отображается в браузере $folderId. В чем может быть проблема? - person chadct; 27.01.2016
comment
Вы добавили это свойство velocity.engine.restricted.variables=? Или, может быть, папка не существует. Посмотрите на параметры в getFolder, второй parentFolderId в приведенном выше примере. - person glw; 27.01.2016
comment
да, я добавил свойство, и имя папки, которое я использую, существует. У него нет родительской папки, что означает, что идентификатор родительской папки должен быть 0 правильным? - person chadct; 27.01.2016
comment
Да, 0 — это идентификатор по умолчанию для корневой папки. Какую версию Liferay вы используете? Я проверил liferay-portal-6.2-ce-ga5. - person glw; 28.01.2016