Fórum

Frage zu einem JSF Portlet (Verändern der Id´s)

N. H., modificado 9 Anos atrás.

Frage zu einem JSF Portlet (Verändern der Id´s)

Junior Member Postagens: 71 Data de Entrada: 14/11/13 Postagens Recentes
Hallo Zusammen,
ich habe folgende Frage. In meinem JSF Porlet habe ich den verschiedenen Komponenten id´s gegeben z.B

<h:dataTable id="tabelle">

nun wird diese ID beim Aufbau des Portlets durch Liferay? verändern in

Bei jeder id wird "_PortletName_WAR_PortletName_:" davor gepackt Ergebnis ist die neue ID -> _PortletName_WAR_PortletName_:tabelle, das bedeutet aber das alle Javascripte welche nur auf "id" ausgelegt waren ja nicht mehr funktionieren ebenfalls geht ein getElementById schief. Kann man das abschalten das die Id´s verändert werden ?

Viele Grüße,
N.H.
thumbnail
Olaf Kock, modificado 9 Anos atrás.

RE: Frage zu einem JSF Portlet (Verändern der Id´s)

Liferay Legend Postagens: 6396 Data de Entrada: 23/09/08 Postagens Recentes
Das Problem der IDs ist, dass sie im resultierenden HTML Dokument eindeutig sein müssen. Wenn der Name der ID schlecht oder generisch gewählt ist, könnten andere Portlets ebenfalls die gleiche ID benutzen - das würde zu einem Konflikt führen, denn nur eines der Elemente würde von Javascript angesprochen werden - im Zweifelsfall das falsche, üblicherweise das, was als erstes im HTML Dokument gefunden wird. Das klappt übrigens auch hervorragend, wenn eine ID zwar kryptisch benannt wurde, dann aber das gleiche Portlet zweimal auf der gleichen Seite platziert wird.

In der Portal-Welt sorgt daher die Laufzeitumgebung dafür, solche Werte eindeutig zu machen. Der gefundene Bestandteil "_PortletName_WAR_PortletName_" ist dabei der sogenannte "Portlet Namespace". Er ist garantiert eindeutig pro Portlet, so dass mit dieser Kombination auch eindeutige IDs generiert werden können. Aus diesem Grund würde ich nicht empfehlen, den Namespace zu entfernen, sondern eher in Javascript die IDs ebenfalls mit diesem zu versehen. In JSPs ist der Namespace mit <portlet:namespace /> zu erreichen - da ich JSF nicht nutze, bin ich mir bei diesem Mechanismus nicht sicher - "namespace" sollte aber als Suchbegriff taugen.