Я пишу свое первое приложение на основе портлетов (для liferay, но решение должно быть независимым от контейнера), и мне интересно, как люди решают предоставлять ссылки пользователю, которые «ведут» на разные портлеты (возможно, на разные «страницы») в портале).
Несмотря на то, что вы можете легко иметь различные режимы просмотра внутри своего портлета, как вы можете ссылаться на другой портлет и (возможно) также передавать параметры вместе?
Я не говорю о простой связи между портлетами, меня интересует реальный поток страниц.
Пример:
У вас есть страница A с портлетом, который отображает список новостей. Тогда у вас есть страница B, которая настроена таким образом, что я хотел бы показать один элемент новостей (например, различные портлеты вокруг него)
Существует ли общее решение для ссылки на страницу B и указания порталу news-Detail-Portlet, что он должен показывать элемент XYZ?
Быстрое и грязное решение заключается в настройке целевой ссылки через режим редактирования портлета news-list-portlet. Но это имеет несколько недостатков:
- сложные портлеты могут иметь несколько целевых URL, что приводит к огромным усилиям по настройке администратора портала
- URL могут не следовать схеме, которая позволяет вводить простые параметры
Я имею в виду решение, но это потребует огромных усилий и, возможно, изменений в целевых портлетах, что не всегда возможно, если вы используете сторонние портлеты.
Мое решение будет выглядеть так: (черновик!)
Портлеты регистрируются в центральной службе со своими идентификаторами портлетов, и когда портлет хочет соединиться с портлетом, он может выполнить поиск на основе символического имени. Это облегчит работу администратора, поскольку возможно автоматическое обнаружение портлетов. Служба также может предоставлять пользовательский интерфейс для связи портлетов на основе исходного и целевого портлетов.
Генерация URL для портлетов, которые могут быть изменены, может быть решена с помощью вызова службы для портлета, который генерирует URL в целом с введенными параметрами и возвращает его.
Для портлетов, которые вы не можете изменить, вы должны добавить параметры и надеяться, что это работает. : - /
Есть предложения? Есть ли более простые решения? существующие решения?
Спасибо!
Patrick