& lt; c: si test & gt; semble toujours évaluer vrai dans les facettes JSF2
Je suis en utilisant JSF2 sur Facelets.
Je définir un <ui:param>
dans une page:
<ui:composition template="/WEB-INF/templates/ui.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<ui:param name="title" value="OnAir WebDemo" />
...
</ui:composition>
dans le ui.xhtml
modèle que j'ai:
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jstl/core"
>
<c:if test="#{not empty title}">
<h1>#{title}</h1>
</c:if>
</html>
Cependant, <c:if test>
semble toujours évaluer true
même si la <ui:param>
n'est pas spécifié. Comment puis-je changer le code de sorte que <c:if test>
sera réellement évaluer false
lorsque le <ui:param>
n'est pas spécifié?
source d'informationauteur Dejell
Vous devez vous connecter pour publier un commentaire.
L'espace de noms XML n'est pas valide. Il devrait être
Oui, étonnamment avec la
/jsp
partie de l'URI! L'un sans/jsp
ne fonctionne que dans les Facelets 1.x pour JSF 1.x. Si vous avez coché le code HTML généré en sortie dans le webbrowser, vous devriez avoir remarqué que la<c:if>
est à gauche unparsed dans la sortie HTML.Cela dit, vous devriez préférer les composants JSF plus de balises JSTL, à moins que techniquement impossible (c'est à dire que lorsque vous souhaitez contrôler le bâtiment de la vue, de ne pas rendu de la vue). Le
h:panelGroup
que vous l'avez trouvé vous-même est un bon candidat, cependant laui:fragment
est un meilleur choix car il a moins de frais généraux.Noter qu'en raison d'une erreur de la JSF gars dans le
<ui:fragment>
tag fichier de définition initiale de la JSF 2.0 version de Netbeans va branler que la balise ne prend pas en charge larendered
attribut, mais c'est faux. C'est certainement la prend en charge. Il a été corrigé dans la JSF 2.1 balise de définition.Voir aussi:
Bien,
J'ai utilisé
rendered
au lieu de cela, comme ceci: