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 :

Condition et logic:iterate


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Condition et logic:iterate
    Bonjour,
    je suis stagiaire dans une entreprise et je développe actuellement des modules pour un SI.
    Il me faudrait une condition dans ma JSP pour pouvoir afficher un iterate.

    voici le code l'iterate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <logic:iterate id="monId" property="maListe" name="maForm">
                                <tr id="autreId${nomid.taoIntId}"  align="center">
                                    <td">
                                        <p>
                                             <bean:write name="taches_engin" property="taoVchNom"/>
                                        </p>
                                    </td>
                                </tr>
        </logic:iterate>
    Le problème, c'est que "maListe" n'est pas instanciée à la création de la page. maListe est créée (grâce à une méthode de maForm) quand l'utilisateur sélectionne des éléments dans une combo.

    J'ai essayé de vérifier quand ma liste n'est pas vide, en utilisant un c:when.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <c:choose>
            <c:when test="${maForm.maListe != null}"> <p> La liste n'est pas nulle ! (WHEN)</p></c:when>
        </c:choose>
    Rien à faire, on dirait que le c:when ne cherche pas vérifier quand maList est != nulle, ou alors que maList reste vide pour la JSP (alors que dans la sortie console d'IDE j'ai bien une liste contenant des éléments.).


    Si vous avez des indices ou des pistes, je suis preneur. (Mon chef de projet ne peut pas m'éclairer sur le sujet )

    Merci d'avance

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Si je te comprends bien, c'est maForm qui est null, donc maForm.maListe => NullPointerException

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je vais te décrire étape par étape le fonctionnement de ma page, peut-être que ça éclaircira les choses :
    1. Je choisi un élement dans une combo
    2. une fois que j'ai choisi mon "lement, je clique sur un radionbutton
    3. cliquer sur le radio déclenche une fonction javascript
    4. l'action javascript déclenche à son tour une méthode dans maForm
    5. c'est dans cette action de maForm que je créer maListe


    Donc "logiquement", avant que je clique sur mon radio, maListe est nulle. Mais une fois que je clique dessus maListe n'est plus nulle (je le vérifie dans ma sortie console).

    Le problème c'est que je n'arrive pas à faire ne sorte que ma JSP affiche ce que je veux quand maListe n'est plus nulle.

    (J'espère avoir mieux expliqué cette fois-ci)

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    maForm n'est pas nulle car quand je test avec la condition suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            <c:when test="${OrgbtpGestionHeuresForm != null}"> <p> La form n'est pas nulle ! (WHEN)</p></c:when>
    J'ai bien un "La form n'est pas nulle ! (WHEN)" qui s'affiche.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par hollywoot Voir le message
    ...
    (J'espère avoir mieux expliqué cette fois-ci)
    Pas sûr

    J'aurais compris quelque chose si tu avais dit : quand ma liste EST nulle.

    On va faire simplement :

    - que veux-tu afficher
    - quel est le code de "maForm"
    - peux-tu également montrer la page jsp (dans son ensemble)
    - comment appelles-tu la page
    - comment se représente ton problème

    (avec ça, ça devrait aller )

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    - que veux-tu afficher
    Je veux faire un tableau avec, dans la première case de chaque ligne, l'intitulé de la tâche contenue dans maListe (pas de soucis, je l'ai déjà plus tôt dans mon stage )

    - quel est le code de "maForm"
    Le code fait 2000 lignes donc je vais te montrer les parties les plus importantes ^^
    La méthode du forme qui est appelée par une fonction javascript :
    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
     
            public HashMap<String, String> findTC(String idOa) {
            ArrayList<Reftacheouvrage> listeTachesChantier = new ArrayList();
            setTacheouvragechantierheures_list(listeTachesChantier);
            Map taches = new HashMap<String, String>();
            Iterator<Reftacheouvrage> it_mo = tacheouvragechantier_list.iterator();
            Reftacheouvrage ldmo;
            while(it_mo.hasNext()) {
                ldmo = it_mo.next();
                if(ldmo.getOuvIntId().getOuvIntId() == Integer.parseInt(idOa)) {
                    String nom = ldmo.getTaoVchNom();
                    taches.put(ldmo.getTaoIntId(), nom);
                    System.err.print("Nom TC  : "+nom);
                    System.err.print("Id  TC  : "+ldmo.getTaoIntId());
                    listeTachesChantier.add(ldmo);
                }
            }
            setTacheouvragechantierheures_list(listeTachesChantier); // Méthode de ma form pour que "maListe" ne soit plus vide.
     
            return (HashMap<String, String>) taches; // data que je retourne au javascript
        }
    Getter et setter pour maListe (dans le form bien sûr).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public List<Reftacheouvrage> getTacheouvragechantierheures_list(){
            return tacheouvragechantierheures_list;
        }
        public void setTacheouvragechantierheures_list(List<Reftacheouvrage> tacheouvragechantierheures_list){
            this.tacheouvragechantierheures_list = tacheouvragechantierheures_list;
        }
    - peux-tu également montrer la page jsp (dans son ensemble)

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    <%--
        Document   : b_orgbtp_gestionheures
        Created on : 12 mai 2010, 14:38:42
        Author     : Guillaume
    --%>
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
    <%@taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
    <%@taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
    <%@taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
    <%@taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
    <html:form action="goGestionHeures.do">
        <h3 align="center">PLACE POUR LE TITRE</h3><br/>
    <TABLE BORDER="0">
        <TR><TD align="center" valign="top">
                <TABLE border>
                    <TR>
                    <TR>
                        <TH colspan="2" align="center" class="bleuformTitle"> Identification du chantier
                        </TH>
                    </TR>
                    <TR>
                        <td align="center" class="bleuform">
                        <bean:message key="message.label.chantier1"></bean:message>
                        </td>
                        <td class="bleuform">
                            <html:select styleId="chantierIntId"  property="chantierIntId" style="width:120px" styleClass="popup_select" onchange="updateCE();updateSalaries();updateEngins();">
                            </html:select>
                        </td>
                    </TR>
                    <TR><td align="center" class="bleuform">
                        <bean:message key="message.label.devisCorpsetat"></bean:message>
                        </td>
                        <td colspan="2" class="bleuform">
                              <html:select styleId="corIntId"  property="corIntId" style="width:120px" styleClass="popup_select" onchange="updateO();">
                              </html:select>
                        </td>
                    </TR>
                    <TR><td align="center" class="bleuform">
                        <bean:message key="message.label.devisOuvrage"></bean:message>
                        </td>
                        <td colspan="2" class="bleuform">
                              <html:select styleId="ouvIntId"  property="ouvIntId" style="width:120px" styleClass="popup_select" onchange="enableRadioB()">
                              </html:select>
                        </td>
                    </TR>
                    <TR><td align="center" class="bleuform" align="center">
                            <input id="radioat" type="radio" name="atch" value="at" disabled="disabled" checked="" onclick="updateTA();"/>Atelier
                        </td>
                        <td colspan="2" class="bleuform" align="center">
                            <input id="radioch" type="radio" name="atch" value="ch" disabled="disabled" checked="" onclick="updateTC();"/>Chantier
                         </td>
                    </TR>
                </TABLE>
            </TD>
     
            <TD align="center" valign="top">
                            <TABLE border>
                                <TR>
                        <TH colspan="2" align="center" class="bleuformTitle"> Identification salarié/engin
                        </TH>
                    </TR>
                    <TR><td align="center" class="bleuform">
                        <bean:message key="message.label.salarie"></bean:message>
                        </td>
                        <td class="bleuform">
                            <html:select styleId="empIntId"  property="empIntId" styleClass="popup_select" style="width:150px" onchange="writeName();">
                           </html:select>
                        </td>
                    </TR>
                    <TR><td align="center" class="bleuform">
                        <bean:message key="message.label.engin"></bean:message>
                        </td>
                        <td colspan="2" class="bleuform">
                              <html:select styleId="engIntId"  property="engIntId" style="width:150px" styleClass="popup_select" onchange="writeEngin();">
                              </html:select>
                        </td>
                    </TR><TR>
                    </TR><TR>
                    </TR>
                </TABLE>
            </TD>
            <TD align="center" valign="top">
                <TABLE border>
                    <TR>
     
                        <th valign="top" align="center" class="bleuformTitle">
                        Semaine
                        </th>
                    </TR>
                    <TR>
                    <td class="bleuform">
                        <html:text styleId="assDateEntree" property="assDateEntree" styleClass="popup_input_demi" readonly="true" onchange="valider(this.value,this.id,this.id+'_span');"></html:text>
                        <img src="<html:rewrite page="/pictures/calendar/calendar.gif"/>" height="16px" width="16px" alt="" name="calendar" onclick="displayCalendar(document.forms[0].assDateEntree,'dd/mm/yyyy',this);"/>
                    </td>
                    </TR>
                </TABLE>
            </TD>
        </TR>
    </TABLE>
     
        <br/>
       <TABLE border="" width="60%">
        <TR>
            <TD colspan="8" class="bleuformTitle" align="center"> Engin : <html:text styleId="engVchNom" property="engVchNom" readonly="readonly" style="background-color:transparent"></html:text></TD>
     
        </TR>
        <TR><TH class="bleuform">Tâche</TH>
            <TH class="bleuform"><bean:message key="message.label.Lundi"></bean:message></TH>
            <TH class="bleuform"><bean:message key="message.label.Mardi"></bean:message></TH>
            <TH class="bleuform"><bean:message key="message.label.Mercredi"></bean:message></TH>
            <TH class="bleuform"><bean:message key="message.label.Jeudi"></bean:message></TH>
            <TH class="bleuform"><bean:message key="message.label.Vendredi"></bean:message></TH>
            <TH class="bleuform"><bean:message key="message.label.Samedi"></bean:message></TH>
            <TH class="bleuform"><bean:message key="message.label.somme"></bean:message> </TH>
        </TR>
            <c:if test="${OrgbtpGestionHeuresForm.tacheouvragechantierheures_list != null}"> <p> La liste n'est pas nulle ! (IF)</p></c:if>
            <c:if test="${OrgbtpGestionHeuresForm.tacheouvragechantierheures_list == null}"> <p> La liste est nulle ! (IF)</p></c:if>
        <c:choose>
            <c:when test="${OrgbtpGestionHeuresForm.tacheouvragechantierheures_list != null}"> <p> La liste n'est pas nulle ! (WHEN)</p></c:when>
            <c:when test="${OrgbtpGestionHeuresForm.tacheouvragechantierheures_list == null}"> <p> La liste est nulle ! (WHEN)</p></c:when>
        </c:choose>
           <c:if test="${OrgbtpGestionHeuresForm != null}"> <p> La form n'est pas nulle ! (IF)</p></c:if>
            <c:if test="${OrgbtpGestionHeuresForm == null}"> <p> La form est nulle ! (IF)</p></c:if>
        <c:choose>
            <c:when test="${OrgbtpGestionHeuresForm != null}"> <p> La form n'est pas nulle ! (WHEN)</p></c:when>
            <c:when test="${OrgbtpGestionHeuresForm == null}"> <p> La form est nulle ! (WHEN)</p></c:when>
        </c:choose>
           <c:when test="${OrgbtpGestionHeuresForm.tacheouvragechantierheures_list != null}">
        <logic:iterate id="taches_engin" property="tacheouvragechantierheures_list" name="OrgbtpGestionHeuresForm">
                                <tr id="round_taches_engin${taches_engin.taoIntId}"  align="center">
                                    <td class="bleuform" style="border:1px solid black">
                                        <p>
                                             <bean:write name="taches_engin" property="taoVchNom"/>
                                        </p>
                                    </td>
                                </tr>
        </logic:iterate>
        </c:when>
    </TABLE>
    </html:form>


    - comment appelles-tu la page


    J'appelle la page en cliquant sur un bouton dans mon menu. (normalement pas de pb à ce niveau)

    - comment se représente ton problème

    Tout dois se dérouler sur la même page.
    Je choisi les "éléments" dans ma (mes) combo, ensuite je clique sur un des deux radioboutons, ce qui va entrainer la création de maListe dans le forme. Je voudrais ensuite remplir un table en utilisant iterate.
    Mais la partie qui me pose vraiment problème c'est cette vérification de "maListe". Car je veux rester sur la même page, sans qu'il y ai de chargement.

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    J'ai du mal à suivre... Il y a du code contrôleur dans l'objet Form !
    Tu ne respectes pas vraiment le modèle MVC.
    C'est un framework struts derrière ?

    Normalement, on n'appelle pas une page (jsp) directement, on passe par une action qui renvoie vers la page.
    L'objet Form ne devrait être que le support des données d'une vue.

    Ensuite, que font tes méthodes javascript ?
    C'est un appel "AJAX" ou une soumission de formulaire ?

  8. #8
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Problème résolu.

    Je vais utiliser du javascript au final. Le résultat sera le même et je pense que je ne pouvais pas faire autrement. Si j'ai bien compris, il n'y a des échanges possibles entre la form et la jsp que lors de l'exécution de la page.

    Merci OButterlin pour ta participation,

    Bonne journée !

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

Discussions similaires

  1. Imbriquer des logic:iterate
    Par lalou33 dans le forum Struts 1
    Réponses: 4
    Dernier message: 16/06/2004, 10h31
  2. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39
  3. [EJB2.1 Entity] [BMP] [Struts] Problème avec <logic:iterate>
    Par romain3395 dans le forum Java EE
    Réponses: 2
    Dernier message: 07/06/2004, 10h12
  4. [struts][iterate] problème logic:iterate avec un Vector
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 9
    Dernier message: 31/03/2004, 18h05
  5. [Struts] logic:iterate avec un Vector
    Par laurentb dans le forum Struts 1
    Réponses: 18
    Dernier message: 03/03/2004, 14h42

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