Ich habe 2 Elemente, Banane und ein outputText, wo Banane eine benutzerdefinierte JSF-Komponente ist und in Banane Renderer möchte ich HTML um das angegebene Element umschließen generieren.Benutzerdefinierte JSF Component Renderer: wie HTML um ein anderes Element rendern
xhtml:
<h:outputText id="theApple" value="This is an Apple" />
.
.
.
<my:banana for="theApple" link="http://www.banana.com" />
bananaRenderer (umschließt das Zielelement in Anker-Links):
@Override
public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
ResponseWriter responseWriter = context.getResponseWriter();
Banana banana = Banana.class.cast(component);
responseWriter.startElement("a", null);
responseWriter.writeAttribute("id", banana.getClientId(context), null);
responseWriter.writeAttribute("href", banana.getLink(), null);
}
@Override
public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
ResponseWriter responseWriter = context.getResponseWriter();
Banana banana = Banana.class.cast(component);
responseWriter.endElement("a");
}
Was ich erreichen möchte:
<a href="http://www.banana.com">This is an Apple</a>
.
.
.
Wie Sie sehen Ich möchte nicht mit der Bananenkomponente, sondern mit dem Attribut "für" auf dem Zielelement zu kodieren. Das nächste Beispiel, das ich gesehen habe, ist PrimeFaces Tooltip, aber ich kann nicht ganz verstehen, wie es das Attribut "for" verwendet. http://www.primefaces.org/showcase/ui/overlay/tooltip/tooltipOptions.xhtml#
Wenn mir jemand in die richtige Richtung zeigen kann, würde es wirklich geschätzt werden. Vielen Dank.
Ihre Lösung funktioniert gut, solange der Apple zuerst kommt. Trotzdem, danke. – Jacob
Ich habe den Code in Antwort auf den anderen Fall auch behoben. Trotzdem, danke. – BalusC