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

Taglibs Java Discussion :

Probleme d'utilisation du tag <c:if [JSTL]


Sujet :

Taglibs Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Par défaut Probleme d'utilisation du tag <c:if
    Bonjour, voila, j'ai un petit soucis avec l'utilisation du tag <c:if>

    Je m'explique:

    Dans mon action struts, je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("sp", sp);
    Mon bean sp possede un Set d'infos qui est accessible grace à la méthode sp.getInfos().

    Je suis 100% sur que ce Set est vide ( sp.getInfos().size() retourne 0 )

    Dans ma jsp, je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <c:if test="${!empty sp.infos}">
    	<tr><td>coucou</td></tr>
    </c:if>
    et bien sur, coucou s'affiche

    Y'a t il une astuce? ou faut-il bannir l'utilisation des Set?
    Merci pour votre aide.

  2. #2
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Citation Envoyé par go_ne
    Je suis 100% sur que ce Set est vide ( sp.getInfos().size() retourne 0 )
    justement, ce n'est pa null


    essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:if test="${fn:length(sp.infos)!=0}">
    	<tr><td>coucou</td></tr>
    </c:if>
    il faut declarer la librairie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Par défaut
    Citation Envoyé par fnobb
    justement, ce n'est pa null


    essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:if test="${fn:length(sp.infos)!=0}">
    	<tr><td>coucou</td></tr>
    </c:if>
    empty, ca teste pas la nullité de la chose...
    Le test n'est pas censé faire un genre ( null or size>0) ?

    Sinon, j'ai pas la taglib fn, et je ne sais pas si je vais pouvoir la mettre...

  4. #4
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    il y a une différence entre null et vide (voir les nombreux NullPointerException du forum )

    la librairie "fn" est dans jstl : si tu utilise "c" pourquoi pas "fn" ?

    pour plus d'info sur jstl il y a un tutoriel très bien fait ( adiGuba )

  5. #5
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    autre solution pour savoir pourquoi le test n'est pas bon :

    essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:if test="${!empty sp.infos}">
    	<tr><td>${sp.infos}</td></tr>
    </c:if>
    et tu verras ce que renvoie sp.getInfos().

  6. #6
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    concernant empty :

    empty renvoie true pour les List, les Map, les Tableaux, les String vide, mais pas pour les Set

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Par défaut
    Citation Envoyé par fnobb
    concernant empty :

    empty renvoie true pour les List, les Map, les Tableaux, les String vide, mais pas pour les Set
    On sait pourquoi?

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Par défaut
    J'ai finalement trouvé:

    Les specs de jstl disent que si c'est pas une List, Map, Tableaux ou String, alors empty renvoient "false"

    Donc ca marche pas pour les Collections, donc pour les Set...

    Il existe un workaround:

    j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <c:if test="${sp.infos['empty']}">
    Et la, ca fait ce qu'il faut!
    Merci pour tout.

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

Discussions similaires

  1. utiliser un tag de struts dans un taglibs
    Par Boosters dans le forum Struts 1
    Réponses: 3
    Dernier message: 19/06/2006, 18h18
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. Probleme d'utilisation de directX 9 avec visual studio.net
    Par cranedoeuf dans le forum DirectX
    Réponses: 1
    Dernier message: 24/05/2004, 04h33
  4. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 18h21
  5. Merci d'utiliser les TAG
    Par Cian dans le forum Etudes
    Réponses: 0
    Dernier message: 07/08/2003, 17h46

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