Alternative à l'interface utilisateur:fragment de JSF
Je suis à la recherche d'un moyen de rendre une section de code JSF, j'ai l'habitude d'utiliser cette approche:
<ui:fragment rendered="#{condition}">
<h:outputText value="text 1"/>
<h:outputText value="text 2"/>
<h:outputText value="text 3"/>
</ui:fragment>
Depuis l'interface utilisateur:fragment ne supporte pas rendu la plupart des IDE comme netbeans marque comme erreur, MAIS il fonctionne parce que dans JSF paramètres sont héritées.
Une façon de résoudre ce problème est d'utiliser une autre structure (par exemple, si vous utilisez la COUTURE) vous pouvez utiliser
<s:div rendered="#{condition}">
....
</s:div>
Une autre façon est de définir le rendu dans tous les intérieurs contenu comme ceci:
<h:outputText value="text 1" rendered="#{condition}"/>
<h:outputText value="text 2" rendered="#{condition}"/>
<h:outputText value="text 3" rendered="#{condition}"/>
Mais je n'aime pas cette façon parce que vous devez ajouter le rendu de chaque élément.
Un autre moyen serait d'utiliser <c:if test="#{condtion}">
MAIS c:si supprimer les éléments de la JSF arbre et ce pas ce que vous voulez toujours faire, surtout si vous utilisez AJAX.
Si vous les gars ont une autre solutions?
Vous devez vous connecter pour publier un commentaire.
C'est effectivement un bug dans JSF 2.0 Facelets balise de déclaration du fichier (dans Mojarra, c'est la
com/sun/faces/metadata/taglib/ui.taglib.xml
fichier). Lerendered
attribut est négligé et manquant dans la balise de déclaration du fichier (et aussi dans la JSF 2.0<ui:fragment>
de la balise de la documentation), alors qu'il est vraiment présents dans leUIComponent
. L'IDE de validation est basée sur le fichier de balises déclarations et par conséquent, il donne une fausse erreur de validation. Ce problème est résolu dans JSF 2.1, le manque d'attribut est ajouté à la balise de déclaration du fichier (et aussi dans la JSF 2.1<ui:fragment>
de la balise de la documentation).Si simplement ignorer l'IDE d'avertissements ou de la mise à niveau vers JSF 2.1 n'est pas une option, alors vous pouvez envisager d'utiliser des le
<h:panelGroup>
composant à la place:Il ne sort rien de toute façon si vous ne spécifiez pas le
id
,style
,styleClass
et comme attributs, d'autre un simple<span>
sera rendue.Si tout ce que vous avez est de la plaine de vanille HTML (pas de composants JSF), alors vous pouvez aussi envisager d'utiliser
<f:verbatim>
.Cependant, la
<f:verbatim>
est obsolète en JSF 2.0 (qui a aussi un documentaire bug par ailleurs, la JSF 2.0<f:verbatim>
de la balise de la documentation ne fait pas mention de la dépréciation, mais le JSF 2.1<f:verbatim>
de la balise de la documentation n').