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 ?

user101442
quelle
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"/>
Romain Linsolas
quelle
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.

mp31415
quelle
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.

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

Sie können die Tomahawk-Komponente von myfaces verwenden

http://myfaces.apache.org/tomahawk-project/tomahawk12/tagdoc/t_div.html

Jack Jin
quelle
Ich habe sogar Tomahawk aus einem Projekt entfernt. Danach war das Projekt viel schneller! Ich würde Tomahawk nicht empfehlen!
Marcel
1
Ich gebe diese Antwort im Jahr 2011. Jetzt benutze ich Primefaces und fühle mich sehr gut dabei
Jack Jin
-3

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

Sanket
quelle
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