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 :

Modifier des "collectionItem"


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut Modifier des "collectionItem"
    Salut !

    J'ai un probleme... je vais essayer de l'expliquer le plus clairement possible.

    J'ai une premiere page jsp qui affiche une collection de cette maniere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <layout:pager maxPageItems="15">
    <layout:collection name="tasksList" id="task" styleClass="FORM" indexId="cle">
    <layout:collectionItem property="area" sortable="true"/>
    ...
    <input name="Select" type="submit" value="Select #" onclick="this.form.elements['reqCode'].value='popup';return openpopup2(this.form, '', '300', '500', event, ${cle});">
    </layout:collection>
    </layout:pager>
    Dans cette page j'ai donc plusieur boutton permetant d'ouvrir un popup.

    Dans la page jsp du popup, pour pouvoir recuperer les éléments de la collection, je fait comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <%	//Recuperer le myTask de l'élement selectionné
    int id = Integer.parseInt( request.getParameter("id") ); //le id correspond a la cle du code precedent
    monPack.MyTask myTask = ((monPack.MyTask)((List)(session.getAttribute("tasksList"))).get(id));
    %>
    Donc j'arrive dans ma page popup à recuperer les valeurs de mes élements de ma collection.

    Par contre, pour les modifiers, je n'y arrive pas
    J'arrive à modifier de simple champs texte en utilisant du javaScript avec cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.opener.document.forms[0]["NomDuChamps"].value = value;
    Mais comme mes collectionItem ne porte pas de nom, je n'arrive à pas les selectionner avec javaScript

    Avez vous une idée de comment je pourais faire ? y aurais t'il une possibiliée pour donner un nom a mes collectionItem ?

    Merci pour votre aide.

  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 modifier les éléments de la collection, il serait mieux de définir tasksList comme propriété d'une ActionForm avec getter et setter.

    Dans l'Action qui s'exécute avant l'affichage de la jsp, au lieu de la mettre dans le scope via un setAttribute, il faudrait initialiser le formulaire via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm=(TonActionForm) form;
    tonActionForm.setTasksList(tasksList) ;
    Ceci implique que le form-bean soit référencé dans le mapping de cette Action dans le struts-config.xml via l'attribut name avec scope="session" et validate="false".

    Ensuite, pour l'afficher dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:collection name="nomDeTonFormBean" property="tasksList" id="task" styleClass="FORM" indexId="index">
    Pour ouvrir une popup en passant en paramètre l'indexId à une Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <layout:collectionItem title="unePropriete" property="unePropriete">
    	<layout:button value="Select" onclick="javascript:window.open('uneAction.do?index=${index}','Select','resizable=no, scrollbars=yes, width=300, height=500);void('');"/>
     </layout:collectionItem>
    Dans l'Action exécutée lors du clic sur le bouton (dans mon exemple, l'Action de path /uneAction), on récupère le paramètre index et on le met dans le scope :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        	String index = request.getParameter("index");
        	request.getSession().setAttribute("index",index) ;
    et dans la jsp dans laquelle tu veux modifier les propriétés d'un bean de la collection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <layout:form action="pathDeTonAction">
    	<layout:text property="tasksList[${index}].propriete1"/>
    	<layout:text property="tasksList[${index}].propriete2"/>
    	<layout:submit>OK</layout:submit>
    </layout:form>
    dans le mapping de cette Action, il faut bien sûr référencer le même form-bean, celui qui a pour propriété tasksList.

    En espérant n'avoir rien oublié.

  3. #3
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    Merci pour ta reponse c_nvy =)

    Ca marche presque :^/...
    Avec cette technique je peu modifier les valeurs des varibles dans mon objet formulaire, mais pas ce qui est écrit sur la page parent...

    En fait, lorsque je modifie une valeur cela s'effectue dans les variables, mais ca ne change pas l'affichage dans la page parent...

    Tu serais comment faire pour qu'une foie que je valide mon formulaire dans le popup, ca applique les modifications sur la page parent ?

  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
    Ben non, là, je ne vois pas comment.

    Dis-moi, es-tu vraiment obligé de passer par une popup pour faire les modifications ?
    Parce qu'en fait, il serait plus simple de faire les modifications directement dans la page dans laquelle tu affiches le contenu de la collection.

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