【发布时间】:2013-01-17 08:48:43
【问题描述】:
我想问一下liferay中是否有任何Java API调用返回特定用户上传的网络内容。
例如,我有一个用户上传了一些内容,我想在 portlet 中显示这些内容,我该如何通过 java 来做到这一点?
【问题讨论】:
-
您可以使用搜索api获取所有用户的内容或扩展JournalArticleService以创建自定义查找器。
标签: liferay webcontent
我想问一下liferay中是否有任何Java API调用返回特定用户上传的网络内容。
例如,我有一个用户上传了一些内容,我想在 portlet 中显示这些内容,我该如何通过 java 来做到这一点?
【问题讨论】:
标签: liferay webcontent
如果您专门讨论显示在Web-content Display portlet 中的网络内容,那么您可以使用JournalArticleService 和JournalArticleLocalService 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 等字段添加条件,例如 version、id、resourcePrimKey、articleId、groupId、companyId 等。
或者,如果您有更复杂的需求,可以在 liferay 中创建 custom-sql-finder 以从 Liferay 数据库表的任意组合中获取所需的数据。
如果您谈论的是博客、Wiki、文件、Web 内容等中的内容,则可以使用它们各自的*LocalServiceUtil,或者您可以使用AssetEntryLocalServiceUtil 来获取特定用户的资产。
因此,对于AssetEntryLocalServiceUtil,您也可以使用DynamicQuery API,如上所示。代码可能不一样,但会遵循相同的行。
您可以通过这个blog了解更多关于DynamicQuery API。
【讨论】: