Liferay - 远程创建的JournalArticle在发布之前无法显示

时间:2015-11-09 15:32:37

标签: java liferay portlet

我一直致力于在远程门户中创建JournalArticle。我成功创建了这篇文章。但是,当我尝试通过Web内容显示进行搜索时,它无法使用。

仅当我手动转发并在远程门户中发布文章时,它才可用。

有没有办法让文章可供展示而无需手动发布?

请按照以下图片进行说明。

New Title1是我在远程portlet中创建的JournalArticle。下图显示了创作后的文章。

enter image description here

我尝试将此文章选择为Web内容显示。

enter image description here

enter image description here

enter image description here

如上所示,我找不到文章。 我回去手动发布文章。

enter image description here

然后我可以在网络内容搜索中找到该文章。

enter image description here

这真的很痛苦,因为我们需要在门户网站创建日志时立即找到它。有谁知道为什么会出现这个问题?什么可以解决这个问题呢?

编辑:添加了在远程门户网站中创建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是远程门户的全局组ID journalFolderSoap是在远程创建的文件夹的JournalFolderSoap对象。 article是本地门户网站中的JournalArticle。 remoteTemplateKey是创建的远程模板的templateKey。

2 个答案:

答案 0 :(得分:3)

试试这个:

journalArticleSoap = journalSoap.addArticle(
    //your code
);

journalSoap.updateStatus(journalArticleSoap.getGroupId(),
    journalArticleSoap.getArticleId(), 1, WorkflowConstants.STATUS_APPROVED, 
    journalArticleSoap.getUrlTitle(), serviceContext);

答案 1 :(得分:2)

我无法理解问题出现的原因。但是当我执行"重新索引所有搜索索引时,我看到问题得到解决。在管理员控制面板下。

所以我写了一个自动执行的代码,如下所示。

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后在远程环境中执行此操作修复了问题。