JournalArticleLocalServiceUtil.updateArticle失败并显示“null”

问题描述 投票:0回答:1

我想更新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 Web界面中找到的标识符。只是为了检查,我验证了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企业版6.2.10 EE GA1。相同的代码在Liferay Portal Community Edition 6.2 CE GA6上运行良好,因此我可能需要一种解决方法来实现我想要的。

当我使用JournalArticleLocalServiceUtil.updateContent而不是它可以工作,但我不能使用它,因为它不会创建新版本的Web内容(它只是替换版本)。

liferay liferay-6
1个回答
0
投票

ServiceContext的自我实例化可能容易出错,因为您不知道服务实现需要哪些字段。我猜你的ServiceContext有一个setter缺失,所以updateArticle(或下面的某处,例如:validate,updateAsset ......)会抛出一个Nullpointer异常。而是使用:

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

否则,您可能需要在执行脚本时调试(如果可能)Service-Implementation。

© www.soinside.com 2019 - 2024. All rights reserved.