如何在liferay中通过代码动态添加iframe

时间:2011-10-31 06:09:22

标签: java iframe liferay portlet portal

我有一个场景,其中在liferay中创建的用户将被分配工具(以iframe的形式)。 每个用户的iframe数量会有所不同,当用户登录时,其公共页面中会自动出现大量的iframe

我怎样才能做到这一点?有没有办法可以将其保存在公共页面的首选项中(对每个用户来说都是唯一的)?或者我应该使用DB来实现相同的目标吗? 谢谢

1 个答案:

答案 0 :(得分:1)

可以通过代码动态地向ifray添加iframe,这可以通过以下代码实现:

            long companyId = themeDisplay.getCompanyId();
        long ownerId = PortletKeys.PREFS_OWNER_ID_DEFAULT;
        int ownerType = PortletKeys.PREFS_OWNER_TYPE_LAYOUT;
        Layout layout = LayoutLocalServiceUtil.getLayout(themeDisplay.getPlid());
        LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType();
        String iframePortletId = layoutTypePortlet.addPortletId(themeDisplay.getUserId(),PortletKeys.IFRAME,"column-2",-1);
        PortletPreferences prefs = PortletPreferencesLocalServiceUtil.getPreferences(companyId,ownerId,ownerType,layout.getPlid(),iframePortletId);
        prefs.setValue("src", "http://www.google.com");
        com.liferay.portal.model.PortletPreferences objPortletPref=PortletPreferencesLocalServiceUtil.updatePreferences(ownerId, ownerType,                     layout.getPlid(), iframePortletId, prefs);
        LayoutLocalServiceUtil.updateLayout(layout.getGroupId(),layout.isPrivateLayout(),layout.getLayoutId(),layout.getTypeSettings());    

这将动态添加iframe。

谢谢。