Общ грид изглед за портал Liferay

Надявам се, че се справяте добре.

Това е моят сценарий. Имам множество (20+) портлета Liferay, които използват мрежи/таблици за показване на данни.

Всеки портлет извлича данни въз основа на различни критерии.

Решетката обаче е същата с някои общи функции като филтриране, пагиниране, експортиране на данни и др.

В момента всеки път, когато трябва да направим промяна в стила на мрежата, трябва да направя промяната във всеки от 20+ портлета. Това наистина е неефективно и води до загуба на много време.

Затова се чудех дали е възможно да се създаде общ „портлет“ или „композитен', така че да може да показва данни от множество портлети? За да уточним, генеричният портлет/композит ще съдържа характеристиките на мрежата, филтрирането, странирането, експортирането и т.н.

Този общ портлет/композит ще получава данни от различните портлети и просто ще ги показва.

Следователно, ако трябва да направя някаква промяна в стила на мрежата, ще е достатъчно да направя промяната само на едно място.

Някой преживявал ли е подобен сценарий преди?

Имате ли някакво решение?

Благодаря предварително за всяка помощ.


person Shahriar N Khondokar    schedule 07.02.2013    source източник


Отговори (2)


Ако имате нужда само от извличане на данни по различни критерии, имате функционалност като експортиране на данни, печат, страниране и т.н., нямате нужда от 20+ различни портлета, можете да използвате един портлет и да имате 20+ негови екземпляра, всеки от които ще бъде конфигуриран като enable.export , enable.print, data.criteria и т.н. Вътре в портлета вашата логика ще изгради мрежа и данни, от които се нуждаете.

Ако наистина имате нужда от Generic Portlet, можете да опитате да имате всичките си 20+ портлета в един .war. Просто бихте включили jsp, които са често срещани в някои портлети, контролери за разширение и т.н.

Още повече... Ако трябва да изпратите данни между портлети, можете да създадете javascript контролери, които ще изпращат събития един на друг, чрез Ajax ще получават данни и ще попълват вашите jsps (в този случай можете да използвате някои шаблони). Моля, попитайте, ако нещо не е ясно.

person Artyom    schedule 07.02.2013

Най-доброто решение би било да се използва един портлет за извличане на всички данни и да се обобщи извличането на данни с един интерфейс и различни реализации - не с различни портове.

Все пак можете да опитате да използвате съоръжението за комуникация между портлети на Liferay, за да предоставите данни от портлети източник към целевите портлети - http://www.liferay.com/community/wiki/-/wiki/Main/Inter-portlet+communication

Но има свои собствени предупреждения - ще трябва или да изпратите данни в браузър, като използвате AJAX или JS събития, или трябва да използвате JSR-286 (Portlets 2.0) събития, които работят от страна на сървъра, но изискват едно да задейства действие в за да се появят събития (т.е. отваряне на портлет с URL адрес на действие, а не URL адрес за изобразяване). Повече за това тук - http://www.liferay.com/community/wiki/-/wiki/Main/Portlet+to+Portlet+Communication

person mvmn    schedule 20.11.2013