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

Я хотел бы спросить, есть ли какой-либо вызов Java API в liferay, который возвращает веб-содержимое, загруженное конкретным пользователем.

Например, у меня есть один пользователь, который загрузил какой-то контент, и я хочу показать его в портлете, как мне это сделать через java?


person fchatzia    schedule 17.01.2013    source источник
comment
Вы можете использовать API-интерфейс поиска, чтобы получить все содержимое пользователя, или расширить JournalArticleService, чтобы создать собственный поиск.   -  person grandv22    schedule 17.01.2013


Ответы (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, поэтому вы получите все версии одного веб-контента, поскольку все эти версии хранятся в одной и той же таблице JournalArticle. Поэтому для этого вы можете добавить условия в dynamicQuery для таких полей, как version, id, resourcePrimKey, articleId, groupId, companyId и т. д.

Или, если у вас есть более сложные потребности, вы можете создать custom-sql-finder в liferay для извлечения нужных данных из любой комбинации таблиц базы данных Liferay.


Если вы говорите о содержимом, таком как блоги, вики, файлы, веб-контент и т. д., то либо используйте соответствующие *LocalServiceUtil, либо вы можете использовать AssetEntryLocalServiceUtil для получения ресурсов для конкретного пользователя.

Таким образом, с AssetEntryLocalServiceUtil вы также можете использовать DynamicQuery API, как показано выше. Код может быть не таким, но будет в том же духе.


Вы можете узнать больше об DynamicQuery API из этого блог.

person Prakash K    schedule 18.01.2013
comment
@fchatzia Это gr8! Тогда не будете ли вы любезны принять это как ответ? Вы можете поставить галочку под опцией голосования, чтобы принять это как ответ. Спасибо - person Prakash K; 21.01.2013