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 :

faire référence à du Javascript à l'intérieur d'un test JSTL (c:if) ? [JSTL]


Sujet :

Taglibs Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Par défaut faire référence à du Javascript à l'intérieur d'un test JSTL (c:if) ?
    Bonjour,

    je voudrais savoir s'il est possible de faire référence à du Javascript à l'intérieur d'un test JSTL (c:if) ?

    En fait, j'ai une liste déroulante de pays et en fonction de la valeur d'un champ hidden de ma page (countryCodeInput), je voudrais présélectionner un certain item de la liste déroulante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <input id="countryCodeInput" type="hidden"/>
     
    <c:forEach items="${countries}" var="loopCountry">
       <option value="<c:out value='${loopCountry.ISOCode}'/>" 
                    <c:if test='${????}'>selected="selected"</c:if>>
    		          		<enotary:wording value='${loopCountry}'/>
       </option>
    </c:forEach>
    Si je met le code suivant à la place de ????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.all.countryCodeInput==loopCountry.ISOCode
    cela ne fonctionne pas

    Le champ hidden "countryCodeInput" est initialisé par une fenêtre fille.

    D'avance je remercie ceux qui pourront me faire avancer

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Pour pouvoir tester la valeur de countryCodeInput dans le tag c:if, il faut mettre la variable dans le scope.
    Ainsi, tu pourras coder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:if test="${countryCodeInput==loopCountry.ISOCode}">

  3. #3
    Membre confirmé Avatar de MicroPuce
    Inscrit en
    Mai 2004
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 262
    Par défaut
    Salut,
    Je dirais non
    Y a juste un truc à pas oublier : javascript = coté client alors que JSTL = coté serveur. Plus précisément, le javascript est interprété par ton browser alors que les JSP (JSTL) sont interprétées par le serveur, y aurait donc comme un souci
    Ce que je comprends pas, c'est que tu dis que ton champ "countryCodeInput" est initialisé dans une fenetre fille, ok, mais comment tu renvoies ce champ à ta JSP? C'est via un formulaire(ou similaire), donc tu peux y acceder avec un truc style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${params.countryCodeInput}
    Logiquement, ta variable est déjà dans le "scope".
    Soit tu te perds dans des allers retours...
    Soit j'ai loupé un épisode

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Par défaut
    Merci c_nvy, mais est-il possible de mettre le contenu de countryCodeInput dans le scope ?

    J'ai essayé de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            <c:set var="countryCodeInput" scope="request">
    		document.all.countryCodeInput.value
    	</c:set>
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            <c:set var="countryCodeInput" scope="request">
    		${document.all.countryCodeInput.value}
    	</c:set>
    mais en vain...

    La variable "countryCodeInput" de scope request contient la chaine en tant que telle et non le contenu comme je le voudrais.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Par défaut
    Merci MicroPuce !

    D'accord avec toi en ce qui concerne :
    javascript = coté client alors que JSTL = coté serveur

    En fait le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <c:forEach items="${countries}" var="loopCountry">
       <option value="<c:out value='${loopCountry.ISOCode}'/>" 
                    <c:if test='${????}'>selected="selected"</c:if>>
    		          		<enotary:wording value='${loopCountry}'/>
       </option>
    </c:forEach>
    est dans un div avec style="display:none"

    et après initialisation de divers champs, y compris le fameux 'countryCodeInput' par la fenêtre fille, cette mm fenêtre appelle une fonction js de la fenêtre parent chargée d'afficher une liste déroulante contenant une liste de pays en présélectionnant celui correspondant au code initialisé.

    Je ne connaissais pas ${params.countryCodeInput} mais vais essayer. Je te tiens au courant si ça aboutti !

    Merci pour ta réponse

  6. #6
    Membre confirmé Avatar de MicroPuce
    Inscrit en
    Mai 2004
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 262
    Par défaut
    Sorry,
    C'est "param" sans S
    Pour plus d'infos, va voir http://adiguba.developpez.com/tutoriels/j2ee/jsp/el/

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Par défaut
    I'm to blame...

    En fait ma select avec tous les pays est bien sûr initialisée au chargement de la page (mm si elle est dans un div style='display:none') !!

    Tout ce que je devais faire est que dans une fonction js je dois faire la présélection du pays...

    Un peu fatigué moi !

    Mes excuses et encore merci pour votre investissement !

  8. #8
    Membre éprouvé Avatar de manube
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2004
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 180
    Par défaut
    Salut,
    Je ne connais pas vraiment le JSLT, mais pour faire communiquer du javascript avec des scripts serveur il y a un truc à la mode: "AJAX".
    Voila c'est tout, je pense que, au cas ou tu voudrais t'y mettre, tu n'auras pas trop de mal à trouver de la doc dessus...
    A+
    Manu

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

Discussions similaires

  1. [VB]Faut-il installer Excel pour y faire référence
    Par Mut dans le forum Installation, Déploiement et Sécurité
    Réponses: 11
    Dernier message: 21/02/2006, 14h28
  2. Réponses: 1
    Dernier message: 10/11/2005, 22h00
  3. Faire référence à un sous-formulaire
    Par Farbin dans le forum Access
    Réponses: 3
    Dernier message: 27/10/2005, 00h32
  4. Faire référence au fichier jar la contenant
    Par Pill_S dans le forum Applets
    Réponses: 4
    Dernier message: 23/05/2005, 14h38
  5. Réponses: 1
    Dernier message: 27/10/2004, 15h36

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