Liferay配置页面中的Portlet首选项范围

时间:2014-05-22 20:19:04

标签: scope liferay portlet preference

我开发了一个Liferay portlet,它具有每个布局唯一的首选项:首选项特定于每个portlet窗口,用户可以通过“Preferences”选项(编辑模式)修改它们。

在liferay-portlet.xml中:

<preferences-unique-per-layout>true</preferences-unique-per-layout>

但是我想添加一个配置页面,以便管理应该在所有portlet窗口之间共享的全局参数。目前这些参数在portlet.xml中作为“init-param”处理,但不是很方便,管理员用户应该能够通过门户网站UI更改这些参数。

我按照here描述的方法创建了这样的页面,它适用于当前的portlet窗口,但不共享首选项。是否可以针对某些偏好使用特定范围?这个other wiki使用了一个指定“uniquePerLayout”和“uniquePerGroup”的方法,但我没有在5.2.3到6.2的API中找到这个方法

public static PortletPreferences getPortletSetup(
      ActionRequest req, 
      String portletId, 
      boolean uniquePerLayout,
      boolean uniquePerGroup)

请有人在这个问题上启发我吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

在6.2中,有getPortletSetup方法接受布局和组,

  

PortletPreferencesFactoryUtil.getPortletSetup(scopeGroupId,layout,   portletId,defaultPreferences)。

您可以从themeDisplay获取scopeGroupId,layout如下所示,以及portletId&amp; defaultPreferences应根据您的要求设置。

    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
    Layout layout = LayoutLocalServiceUtil.getLayout(themeDisplay.getPlid());