【问题标题】:Get user-specific web-content获取用户特定的网络内容
【发布时间】:2013-01-17 08:48:43
【问题描述】:

我想问一下liferay中是否有任何Java API调用返回特定用户上传的网络内容。

例如,我有一个用户上传了一些内容,我想在 portlet 中显示这些内容,我该如何通过 java 来做到这一点?

【问题讨论】:

  • 您可以使用搜索api获取所有用户的内容或扩展JournalArticleService以创建自定义查找器。

标签: liferay webcontent


【解决方案1】:

如果您专门讨论显示在Web-content Display portlet 中的网络内容,那么您可以使用JournalArticleServiceJournalArticleLocalService API 根据用户来获取内容。
在 Liferay 6.0 之前,Web 内容被称为 JournalArticle,因此 API 名称没有改变。

例如:

可以使用DynamicQuery API,如下:

long userId = 10987L; // ofcourse you need to find this

DynamicQuery dynamicQuery = JournalArticleLocalServiceUtil.dynamicQuery();

dynamicQuery.add(RestrictionsFactoryUtil.eq("userId", userId));

int startOfList = 0;
int endOfList = 1000;
// if you want all the JournalArticle retrieved then use:
// int endOfList = QueryUtil.ALL_POS;

// this will retrieve the list of webcontents
List<JournalArticle> articles = (List<JournalArticle>) JournalArticleLocalServiceUtil.dynamicQuery(dynamicQuery, startOfList, endOfList);

上述代码将检索所有JournalArticles,因此您将获得单个网络内容的所有版本,因为所有这些版本都存储在同一个JournalArticle 表中。因此,为此您可以为 dynamicQuery 等字段添加条件,例如 versionidresourcePrimKeyarticleIdgroupIdcompanyId 等。

或者,如果您有更复杂的需求,可以在 liferay 中创建 custom-sql-finder 以从 Liferay 数据库表的任意组合中获取所需的数据。


如果您谈论的是博客、Wiki、文件、Web 内容等中的内容,则可以使用它们各自的*LocalServiceUtil,或者您可以使用AssetEntryLocalServiceUtil 来获取特定用户的资产。

因此,对于AssetEntryLocalServiceUtil,您也可以使用DynamicQuery API,如上所示。代码可能不一样,但会遵循相同的行。


您可以通过这个blog了解更多关于DynamicQuery API。

【讨论】:

  • @fchatzia 那是 gr8!那么你会好心接受这个作为答案吗?您可以勾选投票选项下方的“检查”符号以接受此作为答案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
相关资源
最近更新 更多