我想问一下是否有任何Java API调用在liferay返回web内容,这是由特定用户上传的
例如,我有一个用户上传了一些内容,我想在portlet中显示这些内容,我如何通过java实现这一点?
如果您特别谈论在Web-content Display
portlet中显示的web内容,那么您可以根据用户使用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);
上面的代码将检索所有的JournalArticle
,这样您就可以获得单个web内容的所有版本,因为所有这些版本都存储在同一个JournalArticle
表中。因此,您可以在dynamicQuery
中为version
, id
, resourcePrimKey
, articleId
, groupId
, companyId
等字段添加条件。
或者,如果您有更复杂的需求,您可以在liferay中创建一个自定义sql查找器来从任意组合的liferay DB表中获取所需的数据。
如果你谈论的是博客、维基、文件、Webcontents等内容,那么要么使用它们各自的*LocalServiceUtil
,要么使用AssetEntryLocalServiceUtil
来获取特定用户的资产。
因此,对于AssetEntryLocalServiceUtil
,您也可以使用DynamicQuery
API,如上所示。代码可能不相同,但将沿着相同的行。
您可以从这个博客了解更多关于DynamicQuery
API的信息