2009-06-18 3 views
2

Wir entwickeln eine Reihe von Portlets für Liferay. Derzeit verwenden wir JSPs, sodass wir das Tag für die DIV- und Element-IDs verwenden können, sodass sie auf der Seite eindeutig sind, auch wenn mehrere Instanzen desselben Portlets auf der Seite angezeigt werden. Beispiel:Portlet-Namensraum von GWT und JSR-168/286?

<div id='<portlet:namespace/>div'> 
<form> 
    Enter your name here: <input type='text' id='<portlet:namespace/>name'/> 
</form> 
</div> 

Jetzt möchten wir versuchen, die Portlets mit GWT anstelle von JSP zu erstellen. Alle Beispiele, die ich von GWT-Portlets (von denen es nur ein paar gibt) finden, lösen nicht das Problem "Wie weise ich eindeutige IDs dem div und Elementen zu?", Da GWT in Javascript vorkompiliert zu sein scheint, bevor die IDs sind jemals generiert. Irgendeine Idee, wie man den Namensraum des Portlets in die div/element IDs einbaut?

Antwort

2

GWT enthält eine setId() - Methode für die Element-Klasse, die Sie verwenden können. .

Wenn Sie Widgets verwenden, können Sie rufen widget.getElement() setId (...)

2

Hier ist die beste Verbindung, die ich gefunden: http://xantorohara.blogspot.com/2007/07/portlets-and-gwt.html

Ich löste es durch eine eindeutige ID verwenden für jedes GWT-basierte Portlet auf der Root-Container-Ebene. Außerdem implementierte ich das Befehlsmuster und verfügte über einen Befehls-Dispatcher, der auf der GWT-Verlaufsunterstützung basierte, die entsprechende Aktionen an ein Portlet senden würde, ohne andere Portlets zu stören.

Da liveray jsr 286 unterstützt, können Sie einen GWT-Ajax-Aufruf arrangieren, der die Portlet-ID zurückgibt und diese ID zur Unterscheidung zwischen verschiedenen Portlets verwendet.