Получить пользовательский веб-контент
Я хотел бы спросить, есть ли какой-либо вызов Java API в liferay, который возвращает веб-содержимое, которое было загружено конкретным пользователем.
Например, у меня есть один пользователь, который загрузил некоторый контент, и я хочу показать в портлете этот контент, как я могу сделать это через Java?
1 ответ
Если вы конкретно говорите о веб-контенте, который отображается внутри Web-content Display
портлет, то вы можете использовать JournalArticleService
а также JournalArticleLocalService
API для извлечения контента в зависимости от пользователя.
До Liferay 6.0 веб-контент был известен как 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
s, чтобы вы могли получить все версии одного веб-контента, так как все эти версии хранятся в одном и том же JournalArticle
Таблица. Так что для этого вы можете добавить условия к dynamicQuery
для таких полей, как version
, id
, resourcePrimKey
, articleId
, groupId
, companyId
и т.п.
Или, если у вас есть более сложные потребности, чем вы можете создать пользовательский sql-finder в liferay для извлечения желаемых данных из любой комбинации таблиц Liferay DB.
Если вы говорите о содержимом, как в блогах, вики, файлах, веб-контенте и т. Д., То либо используйте их соответствующие *LocalServiceUtil
или вы можете использовать AssetEntryLocalServiceUtil
чтобы получить активы для конкретного пользователя.
Так с AssetEntryLocalServiceUtil
также вы можете использовать DynamicQuery
API, как показано выше. Код может не совпадать, но будет в том же духе.
Вы можете узнать больше о DynamicQuery
API из этого блога.