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

Servlets/JSP Java Discussion :

Changer une variable JSTL


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut Changer une variable JSTL
    Salut a tous,

    Voila je débute sur la techno jstl et j ai un petit souci avec.

    Tout d abord voici mon code

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <c:forEach items="${ nodes }" var="nodes" varStatus="boucle" begin="0" end="0">
                <form>
                <c:set var="cursor" value="${nodes }" scope="request"></c:set>
    	                <c:out value="Cursor de base = "></c:out>
                		<c:out value="${requestScope.cursor.getQuestion() }"></c:out>
                		<br>
                <c:choose >
     
    	            <c:when test="${not empty nodes.getQuestion() }">
     
    	                <c:if test="${param.btn eq 'Oui'}" var="oui">
    	                	<c:set var="cursor" value="${nodes.getLeftnode() }" scope="request"></c:set>
    	                	<c:out value="Si tu reponds oui = "></c:out>
    	                	<c:out value="${requestScope.cursor.getQuestion() }"></c:out>
    	                </c:if>
    	                <br>
     
    	                <c:if test="${param.btn eq 'Non'}" var="non">
    	                	<c:set var="cursor" value="${nodes.getRightnode() }" scope="request"></c:set>
    	                	<c:out value="Si tu reponds non = "></c:out>
    	                	<c:out value="${requestScope.cursor.getQuestion() }"></c:out>
    	                </c:if>
    	                <br>
     
     
     
    	             </c:when>
     
                </c:choose>
    Sur le cursor de base qui est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:set var="cursor" value="${nodes }" scope="request"></c:set>
    Il n'y a aucun souci.

    Mon problème est que je voudrais modifier CETTE variable la pour qu'a chaque fois que l utilisateur clique sur "oui", le programme affiche une autre question ... et encore une autre et ainsi de suite jusqu’à la fin du programme.

    Donc pour cela, j ai fait une boucle qui dit que "tant qu'il y a des questions, tu me vérifie les deux conditions".
    Ce qui fait ceci pour le "oui"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <c:if test="${param.btn eq 'Oui'}" var="oui">
    	                	<c:set var="cursor" value="${nodes.getLeftnode() }" scope="request"></c:set>
    	                	<c:out value="Si tu reponds oui = "></c:out>
    	                	<c:out value="${requestScope.cursor.getQuestion() }"></c:out>
    	                </c:if>
    Le souci c est qu'il "descend" une seul fois, il ne descend pas plus bas dans l'arbre. Je pense que c est la ligne du "set" qui pose problème mais je ne sais pas comment l écrire !

    En gros, le code écrit en dur devrais ressembler a cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:set var="cursor" value="${nodes.getLeftnode().getLeftnode() }" scope="request"></c:set>
    .

    Ici, ça me donnerais la 2e question et pour avoir la 3e question, il faudrait ajouter un 3e "getLeftnode()" et ainsi de suite

    J'avais déjà fait ce programme en java et ça faisait ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(clavier_question.equals("yes"))
    		        {
    		           cursor = cursor.getLeftnode();
    		        }
    Merkiiii

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    un truc dans ce gout là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:set var="cursor" value="${cursor.getLeftnode() }" scope="session"></c:set>
    En gros tu te doit de réutiliser la dernier cursor. Pour ça, il te faut le stocker ailleurs que dans le request scope, où il disparait très vite.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    Merci pour ta réponse, mais sa ne marche pas

    voila ce que j ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <c:if test="${param.btn eq 'Oui'}" var="oui">
     
    	                	<c:set var="cursor" value="${nodes }" scope="session"></c:set>
    	                	<c:set var="cursor" value="${cursor.getLeftnode() }" scope="session"></c:set>
    	                	<c:out value="Si tu reponds oui = "></c:out>
    	                	<c:out value="${sessionScope.cursor.getQuestion() }"></c:out>
    	                </c:if>
    	                <br>
    J ai bien mis un scope session, je l affiche et ça me donne le même résultat qu avant.

    Pour donner un exemple simple, j ai une question principale qui est "êtes vous un être vivant", une 2e question "êtes vous un homme" et une 3e question qui sera "êtes vous européen".

    Pour l instant il me pose normalement la 1er question et si je réponds oui, il me propose bien la 2e question mais si je clique encore sur "oui", il ne me propose pas la 3e question.

    En fait je pense que mon problème vient de la variable, il n arrive pas a rajouter un 2e "getLeftnode()". Il doit rester bloquer sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:set var="cursor" value="${cursor.getLeftnode() }" scope="session"></c:set>
    et par conséquent s arrete a la 2e question

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par biohazard401 Voir le message

    J ai bien mis un scope session, je l affiche et ça me donne le même résultat qu avant.
    Ben oui, puisque t'as mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:set var="cursor" value="${nodes }" scope="session"></c:set>
    juste avant, tu retombe à 0 à chaque fois, puis t'incrémente de 1. Tu dois pas repasser à 0 justement. Cette ligne là elle va dans le else

    C'est pas parce que c'est du JSTL que la logique booléenne a tout d'un coup changé. Si j'initialise un truc puis que j'avance d'un cran, ben je serais à un cran, pas à 2 ou 3 ou 4 ^^

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    Déja merci pour ta réponse et oui effectivement je ne sais pas ce que j ai foutu sa ne pouvais pas marcher

    Mais en modifiant la petite boulette, ça ne résolue pas mon probleme

    Voici mon code complet
    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
    17
    18
    19
    20
    21
    22
    <c:forEach items="${ nodes }" var="nodes" varStatus="boucle" begin="0" end="0">
            <c:set var="cursor" value="${nodes }" scope="session"></c:set>
                <form>
                <c:choose >
    	            <c:when test="${not empty cursor.getQuestion() }">
    	                <c:if test="${param.btn eq 'Oui'}" var="oui">
    	                	<c:set var="cursor" value="${cursor.getLeftnode() }" scope="session"></c:set>
    	                	<c:out value="Si tu reponds oui = "></c:out>
    	                	<c:out value="${cursor.getQuestion() }"></c:out>
    	                </c:if>
    	                <br>
    	                <c:if test="${param.btn eq 'Non'}" var="non">
    	                	<c:set var="cursor" value="${cursor.getRightnode() }" scope="session"></c:set>
    	                	<c:out value="Si tu reponds non = "></c:out>
    	                	<c:out value="${cursor.getQuestion() }"></c:out>
    	                </c:if>
    	                <br>
    	                <c:out value="Cursor apres le if  = "></c:out>
                		<c:out value="${cursor.getQuestion() }"></c:out>
                		<br>
    	             </c:when>
                </c:choose>
    j initialise bien ma variable hors du if (effectivement c est mieux ^^), et je fais même un affichage après la boucle pour voir comment sort ma variable du if.

    Quand la variable n est pas encore rentrer dans la boucle, dans "cursor après le if", la variable est bien la première question donc "cursor.getQuestion()".

    Ensuite quand je clique sur "oui", la variable après le if prend bien la 2e question soit "cursor.getLeftnode().getQuestion()". Mais quand je repasse une 3e fois dans la boucle, la variable n évolue pas alors qu elle devrais être "cursor.getLeftnode()..getLeftnode().getQuestion()".

    merki

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            <c:set var="cursor" value="${nodes }" scope="session"></c:set>
    Tu continue à le faire dans chaque requete http. Le fait de l'avoir sortis du if ne change rien. Comme je l'ai dit, ca doit aller dans le else.

    Après quel est le but du foreach? Parce que là si tu doit gérer N nodes et pas un par page, c'est complètement différent. Tu as N lignes qui s'affichent et tu met un bouton next / previous pour faire bouger les lignes individuellement? Qu'est-ce que tu essaie de faire? Parce que ce mélange avec une bouche et un when dedans, ça m'a l'air suspect

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    Le foreach va prendre une arraylist d objet que j ai créer avec les données de ma bdd. Chaque nœud de l arraylist possède un id, une question, une réponse, un leftnode et rightnode. Grosso modo c est un arbre binaire

    d'ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:forEach items="${ nodes }" var="nodes" varStatus="boucle" begin="0" end="0">
    Mais si je ne peut pas instancier la variable cursor avec un set, je ne vois pas comment je vais faire pour accéder à mon arbre.

    Par contre en tapant se message, je viens de me rendre compte que la boucle de mon foreach commence a 0 .... et se termine a 0. Parce que je viens de tester en mettant une fin de boucle a 100, et la il me mets bien toutes les questions. Bon elle sont a la suite sur une meme page et c est pas ce que je recherche mais il me trouve bien le tout.

    Serais ce le bout du tunnel ??!!

    merci

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ok, on va simplifier les chose, j'espère bien comprendre.

    Tu as 100 paires questions / réponses dans nodes qui est une arraylist
    tu veux afficher une paire avec des bouton next / previous?

    Alors:

    1) tu retire le foreach: t'affiche que 1 élément, donc pas besoin d'itérer
    2) tu associe à tes boutons previous / next une value qui correspond à l'index à afficher
    3) tu affiche dans ta page la valeur de ${nodes[index]}

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    Hello,

    Merci pour les infos, donc en gros il faut que je change un petit peu mon code. Pour de ce qui est du foreach, c est régler. Voila ce que ça donne maintenant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <c:set var="cursor" value="${nodes }" scope="session"></c:set>
    	            <form>
    	                <c:if test="${param.btn eq 'Oui'}" var="oui">
    	                	<c:set var="cursor" value="${cursor[0].getLeftnode() }" scope="session"></c:set>
    	                </c:if>
    	                <br>
    	                <c:if test="${param.btn eq 'Non'}" var="non">
    	                	<c:set var="cursor" value="${cursor[0].getRightnode() }" scope="session"></c:set>
    	                </c:if>
                		<br>
                		<c:out value="${cursor.getQuestion() }"></c:out>
    J'ai mis l index a 0 pour faire des tests et sa tourne. Point numéro 1, ok !

    Pour ce qui est des boutons next/previous, c est pas totalement ce que je recherche, si j ai bien compris tu pense que je voudrais faire avant/après mais moi c est plutôt gauche/droite ... mais le principe est le même. Donc si je me trompe pas, il me reste à faire une itération grace a une boucle et en mettant le compteur à la place de mon 0.

    merkiii

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Non, il te reste à replacer le if/else pour un truc du genre

    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
     
    <c:if test="${empty index}">
    	                	<c:set var="index" value="0" scope="session"></c:set>
    </c:if>
    <c:if test="${param.btn eq 'Oui'}" var="oui">
    	                	<c:set var="index" value="${index-1}" scope="session"></c:set>
    	                </c:if>
    	            <form>
     
    	                <br>
    	                <c:if test="${param.btn eq 'Non'}" var="non">
    	                	<c:set var="index" value="${index-1}" scope="session"></c:set>
    	                </c:if>
                		<br>
                		<c:out value="${nodes[index].getQuestion() }"></c:out>

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    Hello,

    Alors voici comment j'ai modifier mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <c:choose>
       <c:when test="${not empty cursor[i].getQuestion() }">
          <c:if test="${param.btn eq 'Oui'}" var="oui">
    	<c:set var="cursor" value="${cursor[i].getLeftnode() }" scope="session"></c:set>
            <c:set var="i" value="${i+1 }" scope="session"></c:set>
          </c:if>
     
    	<c:if test="${param.btn eq 'Non'}" var="non">
               <c:set var="cursor" value="${cursor[i].getRightnode() }" scope="session"></c:set>
    	   <c:set var="i" value="${i+1 }" scope="session"></c:set>
    	</c:if>
       </c:when>
    </c:choose>
    Jusque la, tout est ok sauf la boucle qui ne boucle pas

    Pour faire un test pour savoir si a la sortie de boucle cursor n est pas vide, j ai fait un if comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <c:if test="${not empty cursor.getQuestion() }">
       <c:out value="cursor n est pas vides "></c:out>
    </c:if>
    Grace à ça, je vois qu'a la fin de la boucle, cursor n est pas vide sauf qu'il ne retourne pas en haut de la boucle

    Merci

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Montre le code complete de ta JSP, on ne vois pas comment cursor est initialisé la première fois.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    Oups, autant pour moi

    voila le code complet

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Tests JDBC</title>
        </head>
        <body>
            <h1>Tests</h1>
    	        <c:set var="cursor" value="${nodes}" scope="session"></c:set>
    	        <c:set var="i" value="0" scope="session"></c:set>
               	<br>
    	            <form>
    		            <c:choose>
    			            <c:when test="${not empty cursor[i].getQuestion() }">
    			                <c:if test="${param.btn eq 'Oui'}" var="oui">
    			                	<c:set var="cursor" value="${cursor[i].getLeftnode() }" scope="session"></c:set>
    			                	<c:set var="i" value="${i+1 }" scope="session"></c:set>
    			                </c:if>
    			                <br>
    			                <c:if test="${param.btn eq 'Non'}" var="non">
    			                	<c:set var="cursor" value="${cursor[i].getRightnode() }" scope="session"></c:set>
    			                	<c:set var="i" value="${i+1 }" scope="session"></c:set>
    			                </c:if>
    		            		<br>
    		            		</c:when>
    	            		</c:choose>
     
    	            		<c:if test="${not empty cursor.getQuestion() }">
    	            			<c:out value="cursor n est pas vides "></c:out>
    	            			<br>
    	            		</c:if>
     
                		<c:out value="${cursor.getQuestion() }"></c:out>
    	             <br>
                <input name="btn" type="submit" value="Oui"/>
                <input name="btn" type="submit" value="Non"/>
            </form>   
        </body>
    </html>
    Petite information, pour cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <c:out value="cursor en bas de la boucle ${cursor.getQuestion() }"></c:out>
    Cette ligne la marche normalement. Par contre, si je "cursor[i].getQuestion()", sa m affiche une erreur qui est.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Property '1' not found on type beans.Nodes
    merci

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    on tourne en boucle là, et t'as pas l'air de comprendre la logique.

    ta page est réinterprétée à CHAQUE fois que tu fais une requete. Donc ta ligne, dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:set var="cursor" value="${nodes}" scope="session"></c:set>
    est appliquée à chaque fois. Donc à chaque fois, tu recommence à 0, ce qui perd l'intérêt d'avoir stocké le noeud courant dans cursor.

    Ensuite, vu le message d'erreur, j'avais supposé, vu tes messages précédents, que cursor était de type List, visiblement ce n'est pas le cas. Donc tu oublie la facilité proposée plus tôt d'utiliser directement [i].

    Ton code doit être de la forme suivante:

    1) si cursor n'est pas défini: on l'initialise
    2) si on appuie sur previous, on remplace cursor par son prédécesseur
    3) si on appuie sur next, on remplace cursor par son suivant.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    hello,

    Ok je commence a comprendre mon erreur.

    En fait pour moi la boucle commence a partir du "when", donc je penser que ce qui était hors de la boucle ne devais pas boucler. Si j ai bien compris c est la page entière qui boucle et non la partie dans le "when".

    En gros il faut que je change la partie logique de la page

    merci

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    Hello,

    Après moult recherche, j'ai fini a obtenir ce que je voulais.
    Désolé si je remonter le topic mais je voulais juste aider les futurs personnes qui pourrais être bloquer au même endroit que moi

    Voila ce que j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <c:set var="cursor" value="${nodes }" scope="application"></c:set>	 
       <form method="get">
          <c:choose>
          <c:when test="${not empty cursor.getQuestion() }">
             <c:if test="${param.btn eq 'Oui'}" var="oui">
    	    <c:set var="cursor" value="${cursor.getLeftnode() }" scope="session"></c:set>
             </c:if>
             <c:if test="${param.btn eq 'Non'}" var="non">
    	    <c:set var="cursor" value="${cursor.getRightnode() }" scope="session"></c:set>
             </c:if>
          </c:when>
          </c:choose>
          <c:out value="${cursor.getQuestion() }"></c:out>
    Concretement, qu'est ce qui a evoluer ? Quand j'initialise cursor dans le 1er "set" tout en haut, j ai changer le scope, de session je suis passer à application. Comme ça, il ne me réinitialise pas à chaque fois ma variable et tout roule.

    Un grand merci a tchize_ qui ma mis sur la voie

  17. #17
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par biohazard401 Voir le message
    Concretement, qu'est ce qui a evoluer ? Quand j'initialise cursor dans le 1er "set" tout en haut, j ai changer le scope, de session je suis passer à application.
    PAN! en faisant ça: tout le monde qui utilise ton application partage le même objet Cursor initial . Est-ce vraiment voulu? La solution propre avait été données plusieurs fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <c:if test="${empty cursor}">
        <c:set var="cursor" value="${nodes }" scope="session"></c:set>	
    </c:if>

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    J avais vue ton conseil mais en essayant ce que tu me disais, ça ne marcher pas ! Peut être que j avais mal insérer ta condition .

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par biohazard401 Voir le message
    J avais vue ton conseil mais en essayant ce que tu me disais, ça ne marcher pas ! Peut être que j avais mal insérer ta condition .
    j'enleve ce que je dit, je viens d essayer ton code est ça marche comme je le souhaite sans mettre application dans le scope !

    Pourquoi ça ne marcher pas auparavant? je ne sais pas ... et oui effectivement c est beaucoup plus propre et surtout plus compréhensible a lire

    re merci ^^

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/04/2010, 11h22
  2. Réponses: 1
    Dernier message: 13/06/2008, 11h30
  3. changer une variable d'environnement a partir d'un script
    Par doomxl dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 13h08
  4. [JSTL] Récupérer une variable JSTL pour l'utiliser avec JSP
    Par pitit777 dans le forum Taglibs
    Réponses: 3
    Dernier message: 28/03/2006, 09h47
  5. Changer une variable $_SESSION -> Formulaire
    Par Nadd dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2006, 23h37

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