Réglage de l'interface utilisateur:param conditionnellement

Je veux mettre une interface utilisateur:param selon un haricot valeur et j'ai pensé à l'aide de c:si c'était une bonne idée. Donc je l'ai mis dans ma page le code suivant:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:wai="http://www.id.ethz.ch/wai/jsf"
    template="/view/listView.xhtml">

        <c:if test="#{subscriptionListController.model.listViewName eq 'mySubscriptions'}">
         <ui:param name="title" value="#{msg.subscriptionTitleMySubscriptions}"/>
        </c:if>
        <c:if test="#{subscriptionListController.model.listViewName eq 'paidSubscriptions'}">
         <ui:param name="title" value="#{msg.subscriptionTitlePaidSubscriptions}"/>
        </c:if>
        <c:if test="#{subscriptionListController.model.listViewName eq 'allSubscriptions'}">
         <ui:param name="title" value="#{msg.subscriptionTitleAllSubscriptions}"/>
        </c:if>
        ....

mais le paramètre n'est pas défini...

Si je laisse imprimer la valeur de #{subscriptionListController.model.listViewName eq 'mySubscriptions'} - je obtenir vrai dans le cas correspondant et de faux dans les deux autres cas.

Au début je n'avais que 2 possibilités et résolu avec l'opérateur ternaire:

<ui:param name="title" value="#{subscriptionListController.model.listViewName eq 'mySubscriptions' ? msg.subscriptionTitleMySubscriptions : msg.subscriptionTitlePaidSubscriptions}"/>

et cela a fonctionné. Mais maintenant, j'ai plus de possibilités...

Ce que je fais mal?

Vous n'êtes pas clair sur quand elle fonctionne exactement/échoue. Le <c:if>s bien, mais <c:otherwise> est complètement déplacé. Il appartient à une <c:choose>. Aussi le code semble être incomplète, ce qui semble être un modèle de client, mais je suis loin d'en voir la <ui:define>. Vous savez que quelque chose d'extérieur à <ui:define> et <ui:composition> est ignoré par les Facelets?
Le <ui:composition> est là (voir la première ligne de code), donc il ne devrait pas être ignorée. J'ai enlevé le <c:otherwise> et ajouté un c:if à la place. mais cela ne fonctionne toujours pas... Comme l'a dit, avec l'opérateur ternaire sans problèmes, mais avec le c:if nope... (j'ai édité mon code, la valeur pour le titre était faux)
BalusC Ok, le <ui:define> est défini ci-dessous. J'ai changé le c:ifcode et maintenant ça fonctionne! Mais pouvez-vous maintenant expliquez-moi pourquoi avec la sterne. op. fonctionne même si c'est en dehors de la <ui:define>? J'ai d'ailleurs d'autres ui:param définie en dehors d'elle (juste en dessous de la c:if) et qu'ils travaillent...
Pouvez-vous s'il vous plaît mettre votre commentaire en réponse à une question, de sorte que je peux l'accepter, s'il vous plaît?

OriginalL'auteur Francesco | 2013-12-04