Liferay: не существует макета с первичным ключом 0


У меня возникли проблемы с моим Liferay-порталом после того, как я включил функцию для генерации дружественного URL. Это функция:

#set ($layoutLocalService = $serviceLocator.findService("com.liferay.portal.service.LayoutLocalService"))
#set ($layoutId = $getterUtil.getLong($image-link.getData()))
#set ($themeDisplay = $request.get('theme-display'))
#set ($currentPlid = $getterUtil.getLong($themeDisplay.get('plid')))
#set ($currentLayout = $layoutLocalService.getLayout($currentPlid))
#set ($layout = $layoutLocalService.getLayout($getterUtil.getLong($groupId), $currentLayout.isPrivateLayout(), $layoutId))
#set( $friendlyUrl = $layout.getFriendlyURL().replace("/", "") )

После успешного развертывания, во время серфинга по веб-сайту моя консоль выводит следующее:

09:15:26,279 ERROR [http-bio-8080-exec-83][LiferayMethodExceptionEventHandler:33] com.liferay.portal.NoSuchLayoutException: No Layout exists with the primary key 0
com.liferay.portal.NoSuchLayoutException: No Layout exists with the primary key 0

Как мне получить layoutID текущей страницы, а не этой ссылки на изображение?

1 2

1 ответ:

$themeDisplay является вашим другом и может иметь все, что вы ищете (включая текущий макет (страницу). Javadoc, который я связал, не так уж велик, но методы, которые вы найдете там, в основном описательны и должны дать вам ключ к тому, какой текущий контекст вы можете получить от этого объекта.

Например, в теме вы можете использовать $themeDisplay.getLayout().getRegularURL($request) для получения текущей страницы