与portlet类中的Liferay portlet配置交互

4 plugins portlet liferay-6

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

请注意,"配置"我的意思是特定于portlet的一个实例,并且是值不是用户特定的; 如果管理员设置了portlet配置值,它应该对所有用户生效.

例如:

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 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();
Run Code Online (Sandbox Code Playgroud)

这有点令人困惑,因为它的名称PortletPreferences(暗示用户特定的偏好)而不是像PortletConfiguration(暗示管理员控制的全局配置)...所以只需将其视为portlet实例的偏好,而不是特定于任何用户.