2017-01-25 4 views
0

Wir bewerten die Verwendung von JSR-286-Portlets für unser nächstes Projekt. Benutzer können mit unserem gehosteten Dienst eine Web-App erstellen. Jeder Benutzer erhält eine Webiste auf unserem Portlet-Server. Eines unserer Szenarien:Portlet-Navigation

  • Der Benutzer legt unsere „Tabelle Portlet“ eine Seite, er id frei wählt
  • Der Benutzer legt einen unserer „Detail-Portlet“ s auf einer anderen Seite
  • Wenn einige klickt man auf „Detail buton“ auf dem „Tisch Portlet“ er den „Detail-Portlet“

gibt es irgendeine Art und Weise navigiert werden sollte die URLs des „Detail-Portlet“ s in der „Tabelle Portlet zu erhalten ". Etwas wie List<URL> PortletUtil.getPortletURLs(String portletType)?

Wir möchten nicht, dass der Benutzer eine Ziel-URL im "Table Portlet" konfigurieren muss, um fehlerhafte Links zu vermeiden, wenn die Detailseiten-URL geändert wird.

Wir haben noch nicht entschieden, welchen Portlet-Server (wenn überhaupt) zu verwenden, daher sind serverspezifische Lösungen in Ordnung.

+0

Für die Weiterleitung an das Portlet Details, um die spezifische URL zu haben, müssen wir sicherstellen, dass der Portlet-Seitenname gleich bleibt, da die Seitenlayout-ID auf der gleichen Basis berechnet wird. So wollen wir die gleiche Seite haben Wenn nicht, dann müssen wir sicher sein, dass das Details-Portlet nur auf einer der Seiten ist, um das spezifische Layout zu erhalten –

Antwort

2

Die Portlet-Spezifikation sagt nichts über Seiten aus. Aus der Sicht von JSR-286 lautet die Antwort auf Ihre Frage "Nein".

Sie markieren auch Liferay und GateIn, die über proprietäre APIs verfügen. Ohne ins Detail zu gehen, würden Sie in Liferay nach dem "Layout" (dem API-Namen für eine Seite) innerhalb einer Site suchen (API-Name: Gruppe). Sie verwenden LayoutService oder LayoutLocalService für diese Aufgabe. Abhängig von Ihrem Anwendungsfall kann es sein, dass Sie Ihre Leistung auffrischen, um ständig nach Seiten zu suchen. Sie können also Ergebnisse zwischenspeichern (aber zuerst messen, wenn es sich tatsächlich um einen relevanten Leistungseinbruch handelt). Wenn Sie die Seite nicht explizit konfigurieren möchten, müssen Sie auch entscheiden, wie Sie reagieren möchten, wenn verschiedene Seiten dasselbe Detailportlet enthalten.

Auf GateIn-API kann ich keine Hinweise geben.