Как отображать портлет без отображения всей страницы. Лайфрей

У меня есть два портлета на одной странице. Портлет A выполняет очень быструю задачу, а портлет B — очень медленную. Портлет B считывает параметр из A. Если я внесу изменения в A (с помощью RenderURL), Liferay отобразит всю страницу (включая медленный портлет B). Как я могу указать Liferay отображать только портлет A, а не портлет B?


person user1782634    schedule 19.04.2013    source источник
comment
Похоже, вы должны кэшировать результаты медленной задачи портлета B.   -  person Paul Grime    schedule 19.04.2013


Ответы (1)


renderURL всегда будет указывать на всю страницу. Если вы идете «вручную», например. без помощи других фреймворков вам потребуется использовать URL-адрес ресурса и обновить содержимое вашего портлета с помощью Ajax.

Другой вариант — объявить ваш медленный портлет B асинхронным ("ajaxable") и кэшировать вывод, чтобы вам не приходилось постоянно выполнять дорогостоящие операции рендеринга. Параметр ajaxable доступен в файле liferay-portlet.xml и задокументирован для этого файла. Портлет RSS (Liferay-OOTB) настроен таким образом, поскольку может пройти некоторое время, прежде чем этот портлет соберет все свои RSS-каналы и сможет отображать их. Это может быть хорошим планом для необходимых изменений.

person Olaf Kock    schedule 19.04.2013
comment
Спасибо, решение, которое сработало для меня, заключалось в использовании фреймворка. - person user1782634; 19.02.2016