Программирование портала/портлетов – связывание портлетов/потоков страниц

StackOverflow https://stackoverflow.com/questions/785277

  •  16-09-2019
  •  | 
  •  

Вопрос

Я пишу свое первое приложение на основе портлетов (для liferay, но решение должно быть независимым от контейнера), и мне интересно, как люди решают предоставить пользователю ссылки, которые «ведут» к различным портлетам (возможно, на разных «страницах» портала). ).

Хотя внутри вашего портлета можно легко использовать разные режимы просмотра, как можно связать его с другим портлетом и (возможно) передать ему параметры?

Я не говорю о простом взаимодействии между портлетами, меня интересует реальный поток страниц.

Пример:У вас есть страница А с портлетом, отображающим список новостей.Затем у вас есть страница B, настроенная так, как мне хотелось бы, чтобы отображался один элемент новостей (например, разные портлеты вокруг него).

Существует ли общее решение, позволяющее ссылаться на страницу B и сообщать портлету news-Detail-Portlet, что он должен отображать элемент XYZ?

Самым быстрым и грязным решением было бы настроить целевую ссылку в режиме редактирования портлета списка новостей.Но это имеет ряд недостатков:- Сложные портлеты могут иметь несколько целевых URL -адресов, которые приводят к масштабным усилиям по конфигурации для администратора портала - URL -адреса могут не следовать схеме, которая позволяет простую впрыск параметров

У меня есть решение, но это потребует огромных усилий и, возможно, изменений в целевых портлетах, что не всегда возможно, если вы используете сторонние портлеты.

Мое решение будет выглядеть так:(черновик!)

Портлеты регистрируются в центральной службе с помощью своих идентификаторов портлетов, и когда портлет хочет связаться с портлетом, он может выполнить поиск по символическому имени.Это облегчит работу администратора, поскольку портлеты можно обнаружить автоматически.Служба также может предоставлять пользовательский интерфейс для подключения портлетов на основе исходного и целевого портлета.

Генерацию URL-адресов для портлетов, которые можно изменить, можно решить с помощью служебного вызова портлета, который генерирует URL-адрес в целом с введенными параметрами и возвращает его.Для портлетов, которые вы не можете изменить, вам придется добавить параметры и надеяться, что это сработает.:-/

Какие-либо предложения?Есть ли более простые решения?существующие решения?

Спасибо!

Патрик

Это было полезно?

Решение

Насколько я знаю, спецификация портлета этого не охватывает.Поэтому портативного решения не существует.Для Liferay вы всегда можете использовать их собственную библиотеку тегов, которая направлена ​​именно на эту проблему.Аналогичный механизм существует и для Websphere Portal.

Что-то можно найти здесь и здесь

Обычно я старался избегать этого и использовать стандартный механизм IPC (параметры или события публичного рендеринга).

Другие советы

В спецификации JSR 286 можно использовать события для связи между портлетами.Для более старой версии JSR 168 не существует одобренного способа сделать это.Если вы нашли способ, который работает для вас, используйте его.

Есть старая книга, которую бесплатно раздают Мэннинг (требуется регистрация).Там вы можете найти некоторые идеи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top