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("/", "") )

デプロイが成功した後、Web サイトをサーフィンしているときに、コンソールに次のように出力されます。

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を取得するにはどうすればよいですか?

4

1 に答える 1

3

$themeDisplayはあなたの友人であり、あなたが探しているすべてのもの (現在のレイアウト (ページを含む)) を持っている可能性があります。このオブジェクトから取得できる現在のコンテキストの。

たとえば、テーマでは$themeDisplay.getLayout().getRegularURL($request)、現在のページを取得するために使用できます

于 2013-08-20T13:27:24.877 に答える