Java Liferay:不存在主键为0的布局

Java Liferay:不存在主键为0的布局,java,content-management-system,liferay,velocity,portal,Java,Content Management System,Liferay,Velocity,Portal,在包含生成友好URL的函数后,我的Liferay门户遇到了问题。这就是功能: #set ($layoutLocalService = $serviceLocator.findService("com.liferay.portal.service.LayoutLocalService")) #set ($layoutId = $getterUtil.getLong($image-link.getData())) #set ($themeDisplay = $request.get('theme-d

在包含生成友好URL的函数后,我的Liferay门户遇到了问题。这就是功能:

#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
如何获取当前页面的布局ID而不是图像链接的布局ID?

是您的朋友,可能拥有您想要的一切(包括当前布局(页面)).我链接的javadoc没有那么好,但是你会发现其中的方法大多是描述性的,应该会给你一个线索,告诉你可以从这个对象中获得什么样的当前上下文


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

您的
$layoutId
被初始化为
#set($layoutId=$getterUtil.getLong($image link.getData())
-这是否恰好是
0
?该图像甚至不存在。我复制了某个示例页面的代码。如果这是在模板中,则作为模板基础的示例结构显然有一个名为image link的字段,而您的结构没有该字段。否则,请指定您在何处使用此velocity代码。此外,它是可能有助于实现您的目标,我们可能会提供一些提示,说明如何解决基础问题比使用您选择的实现路径解决问题更容易。请用基础问题重新表述问题。@OlafKock我重新表述了我的问题。如果有更好的实现方法,我很乐意听到。