IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Mauvaise interprétation des EL ?


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 30
    Points : 23
    Points
    23
    Par défaut Mauvaise interprétation des EL ?
    Bonjour,

    J'ai un pb assez bizarre. Je souhaite réaliser un affichage conditionnel dans une <h:datatable>. Le principe : vérifier sur chaque bean contenu dans ma liste si une propriété dispose d'une valeur spécifique et afficher la ligne de la datable en fonction.

    Actuellement, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <h:dataTable id="filtersTable" value="#{requeteRci.filters}" var="filter">
     
    <h:column rendered="#{filter.inputValueFilter}">
    	<h:outputText rendered="#{filter.inputValueFilter}" value="Test1" />
    </h:column>
     
    <h:column rendered="#{filter.selectValueFilter}">
    	<h:outputText rendered="#{filter.selectValueFilter}" value="Test2" />
    </h:column>
     
    </h:dataTable>
    où les méthode isInputValueFilter() et isSelectValueFilter() me retournent un boolean.
    Sur mon environnement de dev, tout est OK. En revanche, sur la recette, j'ai l'impression que l'expression définie dans l'attribut "rendered" n'est pas interpretée car rien n'est affiché à l'écran.

    J'ai d'abord pensé que c'était l'attribut "rendered" qui n'était pas interprété mais en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:column rendered="true">
    	<h:outputText rendered="true" value="#{filter.inputValueFilter}-" />
    	<h:outputText rendered="true" value="#{filter.type}" />
    </h:column>
    Il m'affiche les données résultant des méthodes filter.isInputValueFilter() et filter.getType(). Là où c'est bizarre c'est que la valeur retournée par isInputValueFilter vaut bien "true"..

    Pourtant le texte "Test1" n'est pas affiché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:column rendered="#{filter.inputValueFilter}">
    	<h:outputText rendered="#{filter.inputValueFilter}" value="Test1" />
    </h:column>
    Le serveur d'app est JBOSS v4.2.2 GA. Sur mon environnement de dev, j'ai laissé le paramétrage par défaut. Donc rien de spécial.. Je n'explique pas pourquoi l'affichage n'est pas correctement effectué sur l'env de recette.

    Avez vous des idées ??

    Merci !

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu mets bien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:column rendered="#{filter.inputValueFilter}">
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:column rendered="{#filter.inputValueFilter}">

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Oui oui, c'était une erreur de copier coller de ma part..

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    quel est l'environnement de la recette? même serveur, même jdk..??
    tu es sur que que le booléen est à true?

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    De ce que je sais sur l'installation en recette :
    - même JDK
    - même version de JBOSS (en revanche je connais pas précisément les réglages du JBOSS)

    Seul l'OS change (ça doit être une RedHat, alors que sur mon env de dev, je suis sous Windows XP)

    Pour la valeur booléenne a "true", j'en suis sur à 200%, l'accesseur isInputValueFilter() retourne "true" systématiquement.

    EDIT: j'ai aussi essayé de passer par JSTL avec des tests conditionnels (<c:if> et <c:choose>) mais j'ai l'impression que les élements JSTL n'accedaient pas à la variable d'itération de ma <h:datatable>. (idem sur les 2 environnements cette fois ci), c'est pourquoi, je me concentre sur l'évaluation des EL des attributs "rendered" pour le moment. Mais je suis preneur d'une autre méthode d'affichage conditionnel.

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    et la version JSF que tu utilise?

    tu as essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value="#{filter.inputValueFilter}" />
    et les getter/setter sont bien déclarés?

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Oui, ça m'affiche "true".. c'est ça qui est dingue..

    Pour la version de JSF, j'utilise les JAR inclus dans JBOSS (dans deploy\jboss-web.deployer\jsf-libs)..faudrait que je regarde en détails quelle version de JSF est inclus dans JBOSS 4.2.2 GA.

    Là je vient de m'entretenir avec un gars de la recette, visiblement c'est pas la même version de JBOSS, et les jar JSF qu'il m'a envoyé ne correspondent pas à ceux que j'ai en local.. donc là j'intervertis les jars pour essayer de reproduire le comportement de la recette en local.... en croisant les doigts ...

    EDIT: Bon... ayé je reproduis le comportement de la recette en local... le pb provient très certainement de la distrib... j'ai fais une demande pour faire l'opération inverse sur la recette cette fois ci.... j'y crois....

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    le mieux c'est de mettre JSF dans la web app, et ne pas prendre celle du serveur, comme ça tu peux facilement changer de version.

    sinon le deuxième rendered est inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:column rendered="#{filter.inputValueFilter}">
    	<h:outputText rendered="#{filter.inputValueFilter}" value="Test1" />
    </h:column>
    C'est le même teste que pour la colonne.

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Oui.. j'ai vu qu'il y a un paramètre à spécifier dans le web.xml pour indiquer que la webapp embarque JSF.. je corrigerai cela si l'inversion de lib corrige le pb..

  10. #10
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Le pb venait bien des librairies..

    Par contre juste une question : tu disais que le 2ieme rendered était inutile. C'est vrai que le code devient vite horrible..est ce que je peux encapsuler mes x <h:column> et tous ces élements fils dans un un contenair genre <f:subview> qui serait conditionné par une EL ds son attribut "rendered" ? (histoire d'alléger ma page JSP)

  11. #11
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Citation Envoyé par El_touristo Voir le message
    Le pb venait bien des librairies..

    Par contre juste une question : tu disais que le 2ieme rendered était inutile. C'est vrai que le code devient vite horrible..est ce que je peux encapsuler mes x <h:column> et tous ces élements fils dans un un contenair genre <f:subview> qui serait conditionné par une EL ds son attribut "rendered" ? (histoire d'alléger ma page JSP)
    là si tu fais un rendered sur h:column, pas besoin de le faire avec la même condition sur ses composants fils;
    pour encapsuler plusieurs h:column, si tu utilises richfaces, tu peux prendre le composant rich:columnGroup; je pense que tomahawk aussi en a un.

  12. #12
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Ok..

    Merci pour tes infos !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [xsl] mauvaise interprétation du contenu d'une balise XML
    Par Cédric B. dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/01/2006, 12h59
  2. firefox - mauvaise gestion des passwords
    Par photorelief dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/06/2005, 09h02
  3. Réponses: 2
    Dernier message: 19/10/2004, 09h55
  4. DBCC SQLPERF ( LOGSPACE ) Interprétation des résultats
    Par Labienus dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2004, 15h50
  5. Réponses: 3
    Dernier message: 04/09/2002, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo