JournalArticleLocalServiceUtil.updateArticle завершается ошибкой с «ноль» - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу обновить Liferay Web Content, создав новую версию, поэтому я написал этот скрипт Groovy:

import com.liferay.portal.service.ServiceContext
import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil

long companyId=10154
long userId=12328
long groupId=17074933
long folderId = 0
String articleId="17075078"
double version=1
String content='<?xml version="1.0"?><root available-locales="en_US" default-locale="en_US"><static-content language-id="en_US"><![CDATA[Bonjour]]></static-content></root>'

ServiceContext serviceContext = new com.liferay.portal.service.ServiceContext()
serviceContext.setAddCommunityPermissions(true)
serviceContext.setAddGuestPermissions(true)
serviceContext.setScopeGroupId(groupId)
serviceContext.setCompanyId(companyId)
serviceContext.setUserId(userId)

JournalArticleLocalServiceUtil.updateArticle(
    userId, groupId, folderId, articleId, version, content, serviceContext)

К сожалению, консоль скрипта Groovy не работает, и catalina.out содержит только эту минималистическую отладкуинформация:

null

Идентификаторы - это те, которые я нашел в веб-интерфейсе Liferay.Просто чтобы проверить, я проверил содержимое MySQL, значения верны:

mysql> select companyId, userId, groupId, folderId, articleId, version from JournalArticle order by createDate desc limit 1;
+-----------+--------+----------+----------+-----------+---------+
| companyId | userId | groupId  | folderId | articleId | version |
+-----------+--------+----------+----------+-----------+---------+
|     10154 |  12328 | 17074933 |        0 | 17075078  |       1 |
+-----------+--------+----------+----------+-----------+---------+

Что я делаю не так?

Я использую Liferay Portal Enterprise Edition 6.2.10 EE GA1.Тот же код хорошо работает на Liferay Portal Community Edition 6.2 CE GA6, поэтому мне может потребоваться обходной путь для достижения того, чего я хочу.

Когда я использую JournalArticleLocalServiceUtil.updateContent, вместо этого он работает, но я не могу использовать его какон не создает новую версию веб-контента (он просто заменяет версию).

1 Ответ

0 голосов
/ 28 февраля 2019

Самостоятельное создание экземпляра ServiceContext может быть подвержено ошибкам, поскольку вы не знаете, какие поля требуются для реализации сервиса.Я предполагаю, что отсутствует установщик для вашего ServiceContext, поэтому updateArticle (или где-то ниже, например: validate, updateAsset ...) генерирует исключение Nullpointer.Вместо этого используйте:

ServiceContext serviceContext = ServiceContextFactory.getInstance(JournalArticle.class.getName(), actionRequest);

В противном случае может потребоваться отладка (если возможно) реализации службы при выполнении сценария.

...