Как использовать «фреймворк комментариев» Liferay?

#api #comments #liferay #liferay-6

#API #Комментарии #liferay #liferay-6

Вопрос:

Я пытаюсь использовать встроенные функции комментариев в приложении-портлете JSF 2.0 / ICEfaces (приложение уже работает нормально). К сожалению, пока, похоже, нет подробной документации о комментариях, поэтому я надеюсь, что кто-нибудь сможет дать мне несколько указаний, как создавать и извлекать комментарии, которые должны быть связаны с одним целым числом.

Чтобы было более понятно… Я хотел бы (повторно) использовать функциональность портлета «Комментарии к странице» в моем пользовательском портлете, но только базовую службу, а не часть пользовательского интерфейса.

Я уже выяснил, что MBMessageServiceUtil.addDiscussionMessage(…) используется этим портлетом через класс EditDiscussionAction. К сожалению, я понятия не имею, что я должен предоставить в качестве значений параметров. Кто-нибудь может пролить некоторый свет на это? Javadoc какой-то … короткий 😉

 public static MBMessage addDiscussionMessage(long groupId,
                                             String className,
                                             long classPK,
                                             String permissionClassName,
                                             long permissionClassPK,
                                             long threadId,
                                             long parentMessageId,
                                             String subject,
                                             String body,
                                             ServiceContext serviceContext)
  

Приветствую,
tamm0r

Ответ №1:

Это будет долго, но вот примерный ход.

  1. По вашему мнению, вы собираетесь использовать объект MBMessageDisplay.
     MBMessageDisplay messageDisplay =
       MBMessageLocalServiceUtil.getDiscussionMessageDisplay(
          themeDisplay.getUserId(), themeDisplay.getScopeGroupId(),
          MyModelEntry.class.getName(), myModelEntry.getTasksEntryId(),
          WorkflowConstants.STATUS_APPROVED);
  
  1. MBMessageDisplay будет содержать важные данные, такие как ThreadId и parentMessageId, поэтому обязательно опубликуйте и эти данные.

  2. В «Контроллере», где вы выполняете вызов, упомянутый в вашем сообщении, извлеките ServiceContext из запроса следующим образом:

     ServiceContext serviceContext = ServiceContextFactory.getInstance(
       MyModelEntry.class.getName(), actionRequest);
      
  3. Итак, теперь у вас есть все необходимые параметры.

     long groupId - Group (Organization or Community usually) you're writing the comment in.
    String className - MyModelEntry.class.getName()
    long classPK - MyModelEntry's Primary Key or ID
    String permissionClassName - Model where the permission checker should look, typically the same as className
    long permissionClassPK - Its Primary Key or Id
    long threadId - From MBMessageDisplay.
    long parentMessageId - From MBMessageDisplay.
    String subject - the subject
    String body - the body
    ServiceContext serviceContext - from Request in step 3.
      

Надеюсь, это поможет!