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 ответ:
Например, в теме вы можете использовать
$themeDisplay
является вашим другом и может иметь все, что вы ищете (включая текущий макет (страницу). Javadoc, который я связал, не так уж велик, но методы, которые вы найдете там, в основном описательны и должны дать вам ключ к тому, какой текущий контекст вы можете получить от этого объекта.$themeDisplay.getLayout().getRegularURL($request)
для получения текущей страницы