2010-03-04 6 views
5

ist die scenerio: Wir haben eine Anwendung auf Webphere Portal Server 6.1 und Spring MVC läuft. Es gibt eine Seite mit einem einzelnen Portlet, die ein Raster voller Datensätze anzeigt. Sobald auf einen dieser Datensätze geklickt wird, muss er zu einem anderen Portlet navigieren, das sich auf einer anderen Seite befindet - möglicherweise sogar eine andere Portlet-Anwendung auf demselben Portalserver - und diesen spezifischen Datensatz anzeigen.Portlet Seitennavigation mit Parameter - Spring MVC, WebSphere Portal, & JSR 286

Hier ist die Frage: Ich habe gelesen, dass durch die Verwendung von Portal 2.0 des „Public Render-Parameter“ können Sie Daten zwischen Portlets teilen - und das sollten die meisten meiner Probleme zu lösen. Das Problem ist, ich kann nicht finden, wie das funktioniert, wenn Spring MVC verwendet wird. Ich kann keinen Verweis auf "Public Render Parameters" in der Frühjahr MVC technische Dokumentation finden, aber einige Leute haben gesagt, sie haben es funktioniert. Kann mir jemand konkret zeigen, wo die ausführliche Dokumentation dazu steht, oder mir einen kleinen Code-Snippit eines Beispiels geben, das zeigt, wie ich auf diese öffentlichen Render-Parameter in meinen Controller-Klassen zugreifen kann? Wenn es einen besseren Weg gibt, dies in meiner Umgebung zu erreichen, was ist es dann und wo kann ich ein Beispiel finden? Bitte antworten Sie nicht mit, "Wenn Sie dies tun müssen, sollten Sie kein Portal verwenden" oder "Wenn Sie stattdessen XYZ-Technologie verwenden, dann können Sie dies und das tun". Ich kann die Umgebung nicht ändern - es ist, was es ist - ich muss es einfach funktionieren lassen! :) Vielen Dank!

Antwort

3

Sie können öffentliche Renderparameter auf die gleiche Weise verwenden, wie Sie Ihre eigenen Renderparameter verwenden. Sie müssen sie nur in Ihrer portlet.xml deklarieren. Beachten Sie, dass Sie keine öffentlichen Render-Parameter haben dürfen, die denselben Namen wie "private" Render-Parameter haben.

Sie brauchen nur etwas zu Ihrem portlet.xml hinzuzufügen:

<public-render-parameter> 
     <identifier>myParam</identifier> 
     <qname xmlns:x="http://sun.com/params">x:myParam</qname> 
</public-render-parameter> 

und die folgende Zeile in der Portlet-Deskriptor hinzu:

<portlet> 
     . . . 
    <supported-public-render-parameter>myParam</supported-public-render-parameter> 
</portlet> 

Dann können Sie die regelmäßigen getRenderParameter Anrufe verwenden für "myParam" in allen Portlets, die diesen Eintrag in ihrem Portlet-Deskriptor haben.

Für weitere Informationen: http://blogs.oracle.com/deepakg/entry/jsr286_public_render_parameter_feature

+0

Ja - ich denke, das wird funktionieren. Meine Verwirrung kam mit dem Annotations-basierten Modell für Controller, weil Sie nicht von einer Klasse erben oder eine Schnittstelle implementieren. Nachdem ich einige Beispiele in Verbindung mit Ihrem Beispiel betrachtet habe, verstehe ich. Nochmals vielen Dank, dass Sie einem unerfahrenen Portlet-Entwickler geholfen haben! Es gibt ungefähr 16 Java-Frameworks, die wir in einer SOA-basierten Portalanwendung mit hohem Transaktionsvolumen verwenden. Es ist eine Menge zu sehen, die aus einem .net Hintergrund kommt! –