在我添加了一个生成友好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而不是该图片链接?
答案 0 :(得分:3)
$themeDisplay
是您的朋友,可能拥有您正在寻找的所有内容(包括当前的布局(页面)。我链接的javadoc不是那么好,但您在那里找到的方法主要是描述性的并且应该给你一个线索,你可以从这个对象得到什么样的当前背景。
e.g。在主题中,您可以使用$themeDisplay.getLayout().getRegularURL($request)
获取当前页面