Взаимодействие с конфигурацией портлета Liferay в классе портлета - PullRequest
4 голосов
/ 17 сентября 2011

Как получить доступ к конфигурации портлета из класса портлета в портлете MVC плагина Liferay 6.0?

Обратите внимание, что под "конфигурацией" я подразумеваю значения, которые являются специфическими для экземпляра портлета и являются не специфичными для пользователя; если администратор задает значение конфигурации портлета, оно должно действовать для всех пользователей.

например:.

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 Ответ

5 голосов
/ 23 сентября 2011

Вы можете использовать сервис 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 (подразумевает глобальную конфигурацию, управляемую администратором) ... так что просто подумайте об этом как об предпочтениях для экземпляра портлета, который не являются специфическими для любого пользователя.

...