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

Struts 1 Java Discussion :

[JSTL] <c:if >


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Par défaut [JSTL] <c:if >
    quel est la sémantique du tag <c:if ...> de JSTL?
    j'ai essayé le code suivant mais ca ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <c:if test="${trie!='datep'}">
         xxx
    </c:if>
    je souhaite que la chaine "xxx" soit affichée quand trie est différente de la chaine 'datep'

    sachant que "trie" est une variable que je souhaite recuperer depuis la ValidatorForm attaché à la page JSP.
    je peux aussi recuperer la valeur de la variable "trie" sous la pge jsp. Elle est representée par un <html:hidden ...>

    Merci

  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
    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:if test="${trie ne 'datep'}">
         xxx
    </c:if>

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Par défaut
    Citation Envoyé par c_nvy
    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:if test="${trie ne 'datep'}">
         xxx
    </c:if>
    nop, ca ne marche pas. Ca commence à me prendre la tete cette histoire. Y a pas bcp d'exemples sur ce cas la

  4. #4
    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
    Tu as un message d'erreur ou c'est le test qui ne fonctionne pas ?

    Tu veux bien vérifier que trie n'a pas pour valeur 'datep' ?
    ou datep est une variable et tu veux comparer la valeur de la variable trie avec la valeur de la variable datep ?

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Par défaut
    Citation Envoyé par c_nvy
    Tu as un message d'erreur ou c'est le test qui ne fonctionne pas ?

    Tu veux bien vérifier que trie n'a pas pour valeur 'datep' ?
    ou datep est une variable et tu veux comparer la valeur de la variable trie avec la valeur de la variable datep ?
    c'est bien ca, je veux bien vérifier que trie n'a pas pour valeur 'datep' . je n'ai aucun message d'erreur

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Par défaut
    Pour etre sur que la lib est bien installée, il suffit juste de copier standard.jar et jstl.jar dans le repertoir lib de l'application. Et de copier tout les ".tld" dans le repertoir de WEB-INF.
    Il faut aussi declarer le tag
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
    en tete de la pge jsp.
    C'est bien ca ou alors il y a kkchose qui manque?

  7. #7
    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
    Je ne vois rien qui manque.

    As-tu vérifié en affichant le source de ta jsp que le tag c:if est bien interprété ?

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    Ca ne vient pas de ton affichage ?
    Ne faudrait il pas que tu utilises un "c:out" pour afficher ta valeur ?

  9. #9
    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,
    Essaie ça :
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${param['trie']!='datep'}
    A pluche...

  10. #10
    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
    Citation Envoyé par MicroPuce
    Salut,
    Essaie ça :
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${param['trie']!='datep'}
    A pluche...
    ça ne pourra pas fonctionner parce que, d'après khokho, trie n'est pas un paramètre mais une propriété du ValidatorForm.

    Par contre, je viens d'avoir une autre idée.
    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:if test="${nomDeTonFormBean.trie ne 'datep'}">
         xxx
    </c:if>

  11. #11
    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
    Y a un truc qui m'échappe : elle est où cette propriété?
    Parce que, avec les EL, tu vas chercher un objet (ou une propriété d'un objet) qui se trouve dans request, page, session, application ou encore param. Et d'après son code, je vois pas où il va chercher sa variable (au sens EL en tout cas ).
    Ca devrait ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${xxxScope.objet.propriété}

  12. #12
    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
    Comme je l'ai dit précédemment, trie est une propriété du ValidatorForm, d'après ce qu'a écrit khokho.
    Elle doit donc être dans le scope associé au form-bean dans le mapping de l'Action dans le struts-config.xml.

    C'est pour cela que j'ai proposé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:if test="${nomDeTonFormBean.trie ne 'datep'}">
         xxx
    </c:if>
    ainsi, la méthode getTrie() de l'ActionForm sera appelée.

    Enfin, rien ne t'oblige à préciser dans l'EL dans quel scope est la variable.
    C'est vrai que c'est plus propre de le faire mais si ce n'est pas le cas, il va la chercher automatiquement dans les différents scopes.

    Ceci est très bien expliqué dans le tutoriel d'adiGuba sur les EL ici.

  13. #13
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Par défaut
    Citation Envoyé par c_nvy
    Comme je l'ai dit précédemment, trie est une propriété du ValidatorForm, d'après ce qu'a écrit khokho.
    Elle doit donc être dans le scope associé au form-bean dans le mapping de l'Action dans le struts-config.xml.

    C'est pour cela que j'ai proposé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:if test="${nomDeTonFormBean.trie ne 'datep'}">
         xxx
    </c:if>
    ainsi, la méthode getTrie() de l'ActionForm sera appelée.

    Enfin, rien ne t'oblige à préciser dans l'EL dans quel scope est la variable.
    C'est vrai que c'est plus propre de le faire mais si ce n'est pas le cas, il va la chercher automatiquement dans les différents scopes.

    Ceci est très bien expliqué dans le tutoriel d'adiGuba sur les EL ici.

    Desolé de répondre si tard, je n'avais pas accés à Internet. Merci pour vos réponses. J'ai essayé toutes les solutions que vous m'avez proposé mais rien n'y fait.

    Dans le code source affiché chez le client, il intereprete tjs le "c:if" mais il trouve toujours trie='datep' or ce n'est pas le cas.
    Voici exactement le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <c:if test="${processGestionAgent.trie ne 'datep'}">			
          <div id="boutontric"><html:image page="/images/i_tricroissant2.gif" title="Tri croissant des dates de dépot des offres" onclick="document.forms[1].trie.value='datep'; document.forms[1].submit(); return false;"/></div>
    </c:if>

  14. #14
    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
    processGestionAgent est le nom de ton form-bean ou est-ce une propriété de ton form-bean ?

  15. #15
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Par défaut
    Citation Envoyé par c_nvy
    processGestionAgent est le nom de ton form-bean ou est-ce une propriété de ton form-bean ?
    C'est le nom de mon form-bean

  16. #16
    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
    Tu es certain que le tag c:if est bien interprété et donc qu'il n'apparaît pas dans le source ?

    Peux-tu montrer la définition de ton form-bean et le mapping de l'Action liée au form-bean du struts-config.xml et le code de ta jsp ?

  17. #17
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Par défaut
    Citation Envoyé par c_nvy
    Tu es certain que le tag c:if est bien interprété et donc qu'il n'apparaît pas dans le source ?

    Peux-tu montrer la définition de ton form-bean et le mapping de l'Action liée au form-bean du struts-config.xml et le code de ta jsp ?

    chuis certain, le tag est interepreté. De toute facon, quand un tag n'est pas intereprete la page ne s'affiche pas.

    Voici mon action-mapping :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    		<action
    			path="/afficheOffreRechercheRapide"
    			type="m.commun.action.AfficheRechercheRapideFormAction"
    			name="afficheRechercheR"
    			scope="request"
    			attribute="processAfficheRechercheRapide"
    			input="/commun/listeOffreRecherche.jsp">
    				<forward name="afficheOffreRecherche" path="/commun/afficheOffreRecherche.jsp"></forward>
    				<forward name="nouvRecherche" path="/commun/nouvelleRecherche.jsp"></forward>
    				<forward name="affineRecherche" path="/commun/rechercheOffreDetaille.jsp"></forward>
    				<forward name="profile" path="/candidat/afficheEtatCiviCand.jsp"></forward>
    				<forward name="gcv" path="/candidat/cv/gestionCv.jsp"></forward>
    				<forward name="gagent" path="/candidat/agent/gestionAgent.jsp"></forward>
    				<forward name="success" path="/candidat/candidatArea.jsp"></forward>
    				<forward name="identification" path="/commun/identification.jsp"></forward>
    		</action>
    et mon form-bean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		<form-bean
                name="afficheRechercheR"
                type="m.commun.actionform.AfficheRechercheRapideForm"> 
    		</form-bean>
    correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:if test="${afficheRechercheR.trie ne 'datep'}">			
          <div id="boutontric"><html:image page="/images/i_tricroissant2.gif" title="Tri croissant des dates de dépot des offres" onclick="document.forms[1].trie.value='datep'; document.forms[1].submit(); return false;"/></div>
    </c:if>
    concernant le code de la page jsp, elle fait kkchose comme 400lignes alors...

  18. #18
    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
    Citation Envoyé par khokho
    chuis certain, le tag est interepreté. De toute facon, quand un tag n'est pas intereprete la page ne s'affiche pas.
    Quand il n'est pas interprété, tu vois le tag apparaître dans le source.

    Sinon, peux-tu tester avec un logic:notEqual pour voir si tu as le même problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<logic:notEqual name="afficheRechercheR" property="trie" value="datep">
    en n'oubliant pas la directive taglib qui pointe sur la tld :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>

  19. #19
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Par défaut
    Citation Envoyé par c_nvy
    Quand il n'est pas interprété, tu vois le tag apparaître dans le source.

    Sinon, peux-tu tester avec un logic:notEqual pour voir si tu as le même problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<logic:notEqual name="afficheRechercheR" property="trie" value="datep">
    en n'oubliant pas la directive taglib qui pointe sur la tld :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
    c'était ma première solution le <logic:notEqual ...> sauf que ca complique bcp ce que je veux faire et j'avais envie d'alléger ma page un peu.

    Merci en tous cas pour ton aide

  20. #20
    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
    C'était juste pour tester.Il ne faut pas abandonner la solution JSTL pour autant.On va bien trouver quand même.

    Tu ne m'as pas dit si ça fonctionne avec le logic:notEqual ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [JSTL] hashMap
    Par pouss dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/10/2005, 17h53
  2. [JDBC Driver][JSTL] Problème de cast de données
    Par GyLes dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/09/2005, 10h00
  3. [Struts] JSTL ou tagLib Struts
    Par DeeJimy dans le forum Struts 1
    Réponses: 2
    Dernier message: 03/07/2005, 18h33
  4. [Lomboz] JSP Editor + JSTL
    Par lr dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 25/01/2005, 20h18

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