Liferay - 远程创建的 JournalArticle 在发布之前无法显示
Liferay - Remotely created JournalArticle not available for display until Published
我一直致力于在远程门户中创建 JournalArticle。我成功地创建了文章。但是当我尝试通过 Web 内容显示搜索它时,它不可用。
只有在我手动去远程门户发布文章后才可用。
有没有办法让文章可以显示而无需手动发布?
请按照下图进行说明。
New Title1 是我在远程 portlet 中创建的 JournalArticle。下图是刚刚创建好的文章。
我尝试select这篇文章到网页内容展示。
正如你在上面看到的,我找不到这篇文章。
我回去手动发布文章
然后我就可以在网页内容搜索中找到这篇文章了。
这真的很痛苦,因为我们需要在门户中创建期刊后立即找到它。有谁知道为什么会出现这个问题?解决方案是什么?
编辑:添加了在远程门户中创建 JournalArticle 的代码。
journalArticleSoap = journalSoap.addArticle(
remoteGroupId,
journalFolderSoap.getFolderId(),
article.getClassNameId(),
article.getClassPK(),
"",
true,
LocalizationUtil.getAvailableLanguageIds(article.getTitle()),
titleMapValues.toArray(new String[titleMapValues.size()]),
LocalizationUtil.getAvailableLanguageIds(article.getDescription()),
descriptionMapValues.toArray(new String[descriptionMapValues.size()]),
content,
article.getType(),
article.getStructureId(),
remoteTemplateKey,
article.getLayoutUuid(),
displayDate.get(Calendar.MONTH),
displayDate.get(Calendar.DAY_OF_MONTH),
displayDate.get(Calendar.YEAR),
displayDate.get(Calendar.HOUR),
displayDate.get(Calendar.MINUTE),
0, 0, 0, 0, 0, //expirationDate
article.getExpirationDate() == null,
0, 0, 0, 0, 0,
true,
article.isIndexable(),
article.getUrlTitle(),
serviceContext);
journalSoap
是远程门户的 JournalArticleServiceSoap 对象。
remoteGroupId
是远程门户的全局组标识
journalFolderSoap
是在远程创建的文件夹的 JournalFolderSoap 对象。
article
是本地门户中的JournalArticle。
remoteTemplateKey
为创建的远程模板的templateKey
试试这个:
journalArticleSoap = journalSoap.addArticle(
//your code
);
journalSoap.updateStatus(journalArticleSoap.getGroupId(),
journalArticleSoap.getArticleId(), 1, WorkflowConstants.STATUS_APPROVED,
journalArticleSoap.getUrlTitle(), serviceContext);
我不明白为什么会出现这个问题。但是当我在管理控制面板下执行 "Reindex all search indexes" 时,我看到问题得到了解决。
所以我写了一个代码来自动执行这个,如下所示。
try {
String[] companyIdArray = new String[1];
companyIdArray[0] = ""+PortalUtil.getDefaultCompanyId();
Indexer indexer=IndexerRegistryUtil.getIndexer(JournalArticle.class);
indexer.reindex(companyIdArray);
} catch (PortalException e) {
e.printStackTrace();
}
我在远程 portlet 控制器中提供了以上代码并对其进行了 REST 调用。创建 JournalArticle 后在远程环境中执行此操作修复了问题。
我一直致力于在远程门户中创建 JournalArticle。我成功地创建了文章。但是当我尝试通过 Web 内容显示搜索它时,它不可用。
只有在我手动去远程门户发布文章后才可用。
有没有办法让文章可以显示而无需手动发布?
请按照下图进行说明。
New Title1 是我在远程 portlet 中创建的 JournalArticle。下图是刚刚创建好的文章。
我尝试select这篇文章到网页内容展示。
正如你在上面看到的,我找不到这篇文章。 我回去手动发布文章
然后我就可以在网页内容搜索中找到这篇文章了。
这真的很痛苦,因为我们需要在门户中创建期刊后立即找到它。有谁知道为什么会出现这个问题?解决方案是什么?
编辑:添加了在远程门户中创建 JournalArticle 的代码。
journalArticleSoap = journalSoap.addArticle(
remoteGroupId,
journalFolderSoap.getFolderId(),
article.getClassNameId(),
article.getClassPK(),
"",
true,
LocalizationUtil.getAvailableLanguageIds(article.getTitle()),
titleMapValues.toArray(new String[titleMapValues.size()]),
LocalizationUtil.getAvailableLanguageIds(article.getDescription()),
descriptionMapValues.toArray(new String[descriptionMapValues.size()]),
content,
article.getType(),
article.getStructureId(),
remoteTemplateKey,
article.getLayoutUuid(),
displayDate.get(Calendar.MONTH),
displayDate.get(Calendar.DAY_OF_MONTH),
displayDate.get(Calendar.YEAR),
displayDate.get(Calendar.HOUR),
displayDate.get(Calendar.MINUTE),
0, 0, 0, 0, 0, //expirationDate
article.getExpirationDate() == null,
0, 0, 0, 0, 0,
true,
article.isIndexable(),
article.getUrlTitle(),
serviceContext);
journalSoap
是远程门户的 JournalArticleServiceSoap 对象。
remoteGroupId
是远程门户的全局组标识
journalFolderSoap
是在远程创建的文件夹的 JournalFolderSoap 对象。
article
是本地门户中的JournalArticle。
remoteTemplateKey
为创建的远程模板的templateKey
试试这个:
journalArticleSoap = journalSoap.addArticle(
//your code
);
journalSoap.updateStatus(journalArticleSoap.getGroupId(),
journalArticleSoap.getArticleId(), 1, WorkflowConstants.STATUS_APPROVED,
journalArticleSoap.getUrlTitle(), serviceContext);
我不明白为什么会出现这个问题。但是当我在管理控制面板下执行 "Reindex all search indexes" 时,我看到问题得到了解决。
所以我写了一个代码来自动执行这个,如下所示。
try {
String[] companyIdArray = new String[1];
companyIdArray[0] = ""+PortalUtil.getDefaultCompanyId();
Indexer indexer=IndexerRegistryUtil.getIndexer(JournalArticle.class);
indexer.reindex(companyIdArray);
} catch (PortalException e) {
e.printStackTrace();
}
我在远程 portlet 控制器中提供了以上代码并对其进行了 REST 调用。创建 JournalArticle 后在远程环境中执行此操作修复了问题。