Welche jsf-Komponente kann ein div-Tag rendern?


129

ZB: h:inputTextwird a rendern "input type='text'". Welches jsf-Tag kann ein "div"Tag rendern ?


4
Denken Sie daran, dass Facelets und neuere Versionen von JSF Standard-HTML-Tags mit Ihren JSF-Tags mischen können.
Drew

Guter Punkt, aber leider stecke ich mit einer sehr alten Version fest.
user101442

Antworten:


234

Sie können eine DIVKomponente mit dem erstellen <h:panelGroup/>. Standardmäßig <h:panelGroup/>generiert das ein SPAN im HTML-Code.

Wenn Sie jedoch angeben layout="block", ist die Komponente eine DIVim generierten HTML-Code.

<h:panelGroup layout="block"/>

9
Wird für mich nur gerendert, wenn ich der Panelgruppe mit der Implementierung von mojarra-1.2_15 einen Stil oder eine Stilklasse hinzufüge.
James McMahon

3
Nachtrag oder legen Sie das ID-Attribut fest. Wenn ich das nicht mache, wird es nur im HTML ohne die umgebenden DIV-Tags angezeigt.
James McMahon

1
sollten wir nicht sofort das divTag selbst verwenden? Was kann das Problem sein, wenn überhaupt?
Rajat Gupta

4
@Marcos Natürlich können Sie das divTag verwenden, aber in diesem Fall ist diese Komponente nicht Teil des JSF-Komponentenbaums (dh nicht im Java-Code verfügbar). Darüber hinaus können Sie es nicht direkt mit Ajax aktualisieren (außer natürlich, wenn Sie die Aktualisierung direkt in einem Teil Ihres JavaScript-Codes durchführen).
Romain Linsolas

1
Die Antwort ist nur die halbe Wahrheit. Siehe hier docs.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/h/… oder hier docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/… . Die wichtige Information ist, dass Sie auch eine styleoder ein styleClassAttribut benötigen , damit eine divpassiert ... was die Geschichte meiner Meinung nach absolut seltsam macht: Eine Ebene <h:panelGroup layout="block">wird eine <span>? Das ergibt für mich keinen Sinn.
Kawu

18

In JSF 2.2 können Passthrough- Elemente verwendet werden:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:jsf="http://xmlns.jcp.org/jsf">
    ...
    <div jsf:id="id1" />
    ...
</html>

Die Anforderung besteht darin, mindestens ein Attribut im Element zu haben, das den jsf-Namespace verwendet.


14

Abgesehen von der <h:panelGroup>Komponente (was für mich eine kleine Überraschung ist) können Sie ein <f:verbatim>Tag mit dem Escape-Parameter verwenden, falseum ein beliebiges Markup zu generieren. Beispielsweise:

<f:verbatim escape="true">
    <div id="blah"></div>
</f:verbatim>

Beachten Sie, dass es etwas weniger elegant ist als die panelGroupLösung, da Sie dies sowohl für das Start- als auch für das End-Tag generieren müssen, wenn Sie einen Ihrer JSF-Codes mit dem divTag umschließen möchten .

Alternativ haben alle wichtigen UI-Frameworks ein divKomponenten-Tag, oder Sie können Ihr eigenes schreiben.


4
sollten wir nicht sofort das div-tag selbst verwenden? Was kann das Problem sein, wenn überhaupt?
Rajat Gupta


-3

Ich denke, wir können Sie wörtliche Tags verwenden, da wir in diesem Tag alle HTML-Tags verwenden


Ernsthaft? WARUM? Das wörtliche Tag war etwas, das in der JSP-Ära relevant war. In der Facetten-Ära (jetzt 10 Jahre?) Ist es meistens überflüssig, sicherlich in diesem Fall.
Kukeltje
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.