与portlet类中的Liferay portlet配置交互

时间:2011-09-16 22:47:58

标签: plugins liferay-6 portlet

在Liferay 6.0插件MVC portlet中,如何从portlet类访问portlet配置?

请注意,“配置”是指特定于portlet实例的值,并且特定于用户;如果管理员设置了portlet配置值,它应该对所有用户生效。

e.g:

public class MyPortlet extends MVCPortlet
{
  @Override
  public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
    throws IOException, PortletException
  {
    // Fill in the blank; what goes here?
    String configValue = ?;

    renderRequest.setAttribute("some-key", configValue);        

    super.doView(renderRequest, renderResponse);
  }
}

1 个答案:

答案 0 :(得分:5)

您可以利用Liferay的PortletPreferences服务来实现这一目标:

String portletInstanceId = (String) renderRequest.getAttribute(WebKeys.PORTLET_ID);

PortletPreferences config = PortletPreferencesFactoryUtil.getPortletSetup(request, portletInstanceId);

// To retrieve a value from configuration:
String value = config.getValue("key", "default value");

// To store a value:
config.setValue("key", newValue);
config.store();

有点令人困惑,因为它被命名为PortletPreferences(意味着用户特定的偏好),而不是PortletConfiguration(意味着管理员控制的全局配置)...所以只需将其视为首选项不是特定于任何用户的portlet实例。