Frage

Ich schreibe meine erste Portlet-basierte Anwendung (für liferay, aber die Lösung sollte Container Agnostiker) und ich frage mich, wie die Leute lösen Links für den Benutzer zur Verfügung zu stellen, dass „führen“ zu verschiedenen Portlets (vielleicht auf verschiedene „Seiten“ im Portal).

Während Sie leicht unterschiedlichen Anzeigemodi in Ihrem Portlet haben können, wie können verknüpfen Sie zu einem anderen Portlet und (vielleicht) auch entlang Parameter übergeben?

ich nicht zwischen Portlets über Normal Kommunikation spreche, es ist die wahre pageflow, das mich interessiert.

Beispiel: Sie haben Seite A mit einem Portlet, das eine Liste von Nachrichten anzeigt. Dann haben Sie Seite B, die in der Art und Weise ist konfiguriert ich eine einzelne der News möchten (zB um es verschiedene Portlets) gezeigt werden

Gibt es eine generische Lösung auf Seite B und sagen zu dem News-Detail-Portlet zu verknüpfen, die es Artikel XYZ zeigen sollte?

Die schnelle und schmutzige Lösung wäre es, die Zielverbindung über den Bearbeitungsmodus des Nachrichten-list-Portlet zu konfigurieren. Das hat aber mehrere Nachteile: - komplexe Portlets können mehrere Ziel URLs haben, die für das Portal Admin zu massiven Konfigurationsaufwand führt - URLs möglicherweise nicht über ein Schema folgen, die einfachen Parameter Injektion erlaubt

Ich habe eine Lösung im Kopf, aber dies würde massive Anstrengungen erfordern und vielleicht ändert sich in den Ziel Portlets, was nicht immer möglich ist, wenn Sie 3rd-Party-Portlets verwenden.

Meine Lösung würde wie folgt aussehen: (! Entwurf)

Portlets registrieren Sie sich bei einem zentralen Dienst mit ihrem Portlet-IDs und wenn ein Portlet Portlet verbinden will, kann es eine Lookup auf einem symbolischen Namen basierte tun. Dies würde den Schmerz für den Admin erleichtern, da es möglich ist, Portlets „auto entdecken“. Der Dienst kann auch eine Benutzeroberfläche auf Draht Portlets bietet basierend auf Quell- und Ziel Portlet.

Die URL-Generierung für Portlets, die Änderungen werden kann, kann über Serviceanruf zu dem Portlet gelöst werden, der die URL als Ganzes mit eingespritztem Parametern erzeugt und gibt ihn zurück. Für Portlets, die Sie nicht ändern können Sie die Parameter anhängen müssen und hoffen, dass es funktioniert. : - /

Irgendwelche Vorschläge? Gibt es einfachere Lösungen? bestehende Lösungen?

Danke!

Patrick

War es hilfreich?

Lösung

Soweit ich weiß Portlet Specification dies nicht decken. So gibt es keine tragbare Lösung. Für Liferay können Sie immer ihre individuelle Tag-Bibliothek benutzen, die genau dieses Problem soll. Es gibt einen ähnlichen Mechanismus für Websphere Portal.

Etwas gefunden werden hier und hier

Generell würde ich versuchen, dies zu vermeiden und verwenden Standard-IPC-Mechanismus (Public Render-Parameter oder Ereignisse)

Andere Tipps

Für JSR 286-Spezifikation ist es möglich, Ereignisse zu verwenden, um Inter-Portlet-Kommunikation. Für die ältere JSR 168 gibt es keine gebilligt Weg, dies zu tun. Wenn Sie einen Weg finden, die für Sie arbeitet, dann verwenden.

Es gibt ein altes Buch kostenlos verschenkt von Manning (Registrierung erforderlich). Sie können einige Ideen dort finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top