Quel composant jsf peut rendre une balise div?

129

Par exemple: h:inputTextrendra un fichier "input type='text'". Quelle balise jsf peut rendre une "div"balise?

user101442
la source
4
Gardez à l'esprit qu'avec Facelets et les nouvelles versions de JSF, vous êtes libre de mélanger des balises HTML standard avec vos balises JSF.
Match
Bon point, mais malheureusement, je suis coincé avec une version très ancienne.
user101442

Réponses:

234

Vous pouvez créer un DIVcomposant à l'aide de <h:panelGroup/>. Par défaut, le <h:panelGroup/>générera un SPAN dans le code HTML.

Cependant, si vous spécifiez layout="block", le composant sera un DIVdans le code HTML généré.

<h:panelGroup layout="block"/>
Romain Linsolas
la source
9
Ne rend pas pour moi à moins que j'ajoute un style ou une classe de style au panelgroup, en utilisant l'implémentation mojarra-1.2_15.
James McMahon
3
Addendum ou définissez l'attribut ID. Si je ne fais pas cela, il apparaît simplement dans le HTML sans les balises DIV environnantes.
James McMahon
1
ne devrions-nous pas immédiatement utiliser le divtag lui-même? Quel peut être le problème le cas échéant?
Rajat Gupta
4
@Marcos Bien sûr, vous pouvez utiliser la divbalise, mais dans ce cas, ce composant ne fera pas partie de l'arborescence des composants JSF (c'est-à-dire non disponible dans le code Java). En plus de cela, vous ne pourrez pas l'actualiser directement en utilisant Ajax (sauf, bien sûr, si vous faites l'actualisation directement dans une partie de votre code JavaScript).
Romain Linsolas du
1
La réponse n'est que la moitié de la vérité. Voir ici docs.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/h/… ou ici docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/… . L'information importante est que vous avez également besoin d'un styleou d' un styleClassattribut pour qu'un divse produise ... ce qui rend l'histoire absolument étrange à mon humble avis: une plaine <h:panelGroup layout="block">rendra un <span>? Cela n'a pas de sens pour moi.
Kawu
18

Dans JSF 2.2, il est possible d'utiliser des éléments de relais :

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

La condition est d'avoir au moins un attribut dans l'élément en utilisant l'espace de noms jsf.

mp31415
la source
14

En dehors du <h:panelGroup>composant (ce qui me surprend un peu), vous pouvez utiliser une <f:verbatim>balise avec le paramètre d'échappement défini sur falsepour générer le balisage de votre choix. Par exemple:

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

Gardez à l'esprit que c'est un peu moins élégant que la panelGroupsolution, car vous devez générer cela pour les balises de début et de fin si vous souhaitez envelopper l'un de votre code JSF avec lediv balise.

Alternativement, tous les principaux frameworks d'interface utilisateur ont une divbalise de composant, ou vous pouvez écrire la vôtre.

Nick Grubb
la source
4
ne devrions-nous pas immédiatement utiliser la balise div elle-même? Quel peut être le problème le cas échéant?
Rajat Gupta
3

vous pouvez utiliser le composant myfaces tomahawk

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

jack jin
la source
J'ai même supprimé tomahawk d'un projet. Ensuite, le projet était beaucoup plus rapide! Je ne recommanderais pas d'utiliser tomahawk!
marcel
1
Je fais cette réponse en 2011. maintenant, j'utilise primefaces, et je me sens très bien
jack jin
-3

Je pense que nous pouvons utiliser une balise verbatim, car dans cette balise, nous utilisons l'une des balises HTML

Sanket
la source
Sérieusement? POURQUOI? La balise Verbatim est quelque chose qui était pertinent à l'époque jsp. A l'époque des facelets (10 ans maintenant?) C'est surtout superflu, certainement dans ce cas.
Kukeltje