3

在包含生成友好 URL 的函数后,我的 Liferay-Portal 出现问题。这是功能:

#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 而不是该图像链接的 layoutID?

4

1 回答 1

3

$themeDisplay是您的朋友,可能拥有您正在寻找的一切(包括当前布局(页面)。我链接的 javadoc 不是那么好,但您会发现那里的方法大多是描述性的,应该给您一个线索您可以从此对象获取当前上下文。

例如在主题中,您可以使用$themeDisplay.getLayout().getRegularURL($request)获取当前页面

于 2013-08-20T13:27:24.877 回答