Получить пользовательский веб-контент

Я хотел бы спросить, есть ли какой-либо вызов 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 из этого блога.

Другие вопросы по тегам