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 :

[Struts] <Bean:write> dans un <html:select>


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Struts] <Bean:write> dans un <html:select>
    Mon problème est situé dans le code ci dessous : je voudrais renvoyer à une fonction javascript la valeur choisie dans mon select mais aussi le numéro contenu de mon document dans "<bean:write name='documentActionData property='documentData.id'/>" ..


    <!-- Definition d'un bean : liste des actions de type List-->
    <bean:define id="actionDataList" name="documentActionData" property="actionDataListCollection"/>

    <html:select name="documentActionData" property="actionDataList" onchange="test(this.options[this.selectedIndex].value,<bean:write name='documentActionData' property='documentData.id'/>);this.selectedIndex= 0;">
    <html:option value="#">----------------------</html:option>
    <html:options collection="actionDataList" property="name" labelProperty="name"/>
    </html:select>
    La page m'affiche une erreur javascript "Erreur:Erreur de syntaxe"

    Vous avez la solution ?? je suis preneur (je ne suis pas un pro Struts ..)

    Merci

    Modéré par zekey: Utilisez plutot des tags dans le titres. Merci

  2. #2
    Membre régulier Avatar de stela86
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 111
    Points
    111
    Par défaut
    J'ai eu une erreur de se type. J'ai constaté que ça venez du fait que onChange ou autre accepte seuleument du texte ou seulement une balise de type <bean:write ..>
    Donc soit tu met que du texte soit tu mets qu'une balise

    Essaye aussi d'afficher ton code pour voir s'il te met la bonne valeur dans le onChange !

  3. #3
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    regarde dans ce lien j espere que ca sera suffisant

    http://www.developpez.net/forums/sho...d.php?t=152823

  4. #4
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    En codant la fonction javascript suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function test()
    {
    var selectId=document.getElementsByName('selectId')[0].value;
    alert(selectId) ;
    }
    
    et le tag html:select suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <html:select name="documentActionData" property="selectId" onchange="test();>
      <html:option value="#">----------------------</html:option>
      <html:options collection="actionDataList" property="id" labelProperty="name"/>
    </html:select>
    dans la fenêtre d'alerte, tu devrais récupérer l'id selecté.
    La fenêtre alert, c'est juste pour t'assurer que ça correspond bien à ce que tu attends.

    Ceci suppose que tu as une propriété selectId dans ton ActionForm avec getter et setter.

    Je l'ai appelé selectId et non actionDataList parce que je trouve dommage de donner le même nom à la propriété sélectée et à la collection.

    Vois si ça correspond à ton besoin.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci de m'avoir répondu

    je répond en premier à c_nvy :

    Je ne peux aller chercher les informations à partir du script javascript car en faite ma page final affiche une liste de documents enregistrés dans ma BDD ...

    Pour chaque document, j'ai une liste d'actions possible (d'ou le select) ... Je dois impérativement renvoyer du select à ma javascript l'action à réalisé (this.options[this.selectedIndex].value) mais aussi l'ID du document concerné (<bean:write name="documentActionData" property="documentData.id" />)

    Vu que je fais un <logic:iterate> pour boucler sur tous mes documents et qu'a la fin de chaque ligne correspondant à un document, j'intègre un <html:select>, je ne peux du script aller chercher l'info du select car ils sont tous le même nom ...

    Je répond maintenant à Stela86:

    J'ai trouvé ta remarque tres interessante
    J'ai constaté que ça venez du fait que onChange ou autre accepte seuleument du texte ou seulement une balise de type <bean:write ..>
    Donc soit tu met que du texte soit tu mets qu'une balise
    Donc j'ai fais comme tu as dit et pour testé j'ai seulement mis une balise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <html:select name="documentActionData" property="actionDataList" onchange='javascript:test(<bean:write name="documentActionData" property="documentData.id" />);this.selectedIndex= 0;'>
    <html:option value="#">----------------------</html:option>
    <html:options collection="actionDataList" property="name" labelProperty="name"/>
    </html:select>
    Le problème est que j'ai toujours mon erreur javascript "Erreur:Erreur de syntaxe" et que quand je regarde le source de ma page IE, il interprete pas ma balise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <select name="actionDataList" onchange="javascript:test(<bean:write name="documentActionData" property="documentData.id" />;);this.selectedIndex= 0;">
    <option value="#">----------------------</option>
    <option value="create">create</option>
    <option value="view">view</option>
    <option value="update">update</option>
    <option value="checkin">checkin</option>
    <option value="cancel_checkout">cancel_checkout</option>
    <option value="view_history">view_history</option>
    <option value="delete">delete</option>
    <option value="view_attribute">view_attribute</option>
    <option value="search">search</option></select>
    Ai-je mal interprété ta remarque ??

    Merci de m'aider


    Au besoin, je vous met une partie du code de ma page:
    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
    <logic:present name="<%=Constants.DOCUMENT_ACTION_LIST%>" scope="request">
    <logic:iterate id="documentActionData" name="<%=Constants.DOCUMENT_ACTION_LIST%>"
    scope="request"			type="com.bean.document.DocumentActionData">
    <tr>
    <th style="border-bottom:1px solid #C1CDD8;" nowrap>&nbsp;
    <logic:present name="documentActionData" property="documentData.lockedby">
    <i><bean:write name="documentActionData" property="documentData.lockedby.name" /></i>
    </logic:present>
    </th>
    <th align="left" style="border-bottom:1px solid #C1CDD8;" nowrap>
    <html:link action="/document/view" paramId="id" paramName="documentActionData" paramProperty="documentData.id">
    &nbsp;<bean:write name="documentActionData" property="documentData.title" />
    </html:link>
    </th>
    <th align="left" style="border-bottom:1px solid #C1CDD8;" nowrap>&nbsp;<bean:write
    name="documentActionData" property="documentData.businessRevision" /></th>
    <th align="left" style="border-bottom:1px solid #C1CDD8;" nowrap>&nbsp;<bean:write
    name="documentActionData" property="documentData.projectNumberId" /></th>
    <th align="left" style="border-bottom:1px solid #C1CDD8;" nowrap>&nbsp;<bean:write
    name="documentActionData" property="documentData.lpiCreationDate" /></th>
    <th align="left" style="border-bottom:1px solid #C1CDD8;" nowrap>&nbsp;<bean:write
    name="documentActionData" property="documentData.objectType.description" />
    </th>
    <th class="result" style="border-bottom:1px solid #C1CDD8;" nowrap>&nbsp;
     
    <!--  Definition d'un bean : liste des actions de type List-->
    <bean:define id="actionDataList" name="documentActionData" property="actionDataListCollection"/>
     
    <html:select name="documentActionData" property="actionDataList" onchange='javascript:test(<bean:write name="documentActionData" property="documentData.id" />);this.selectedIndex= 0;'>
    <html:option value="#">----------------------</html:option>
    <html:options collection="actionDataList" property="name" labelProperty="name"/>
    </html:select>					
    </th>
    </tr>
    </logic:iterate>
    </logic:present>

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Points : 165
    Points
    165
    Par défaut
    On ne peut pas mettre un tag struts à l'intérieur d'un autre tag (donc pas de <bean... dans un <select...>).
    Tu peux par contre repasser en jsp pour cette partie là :
    <%=documentActionData.getDocumentData().getId()%>

  7. #7
    Membre régulier Avatar de stela86
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 111
    Points
    111
    Par défaut
    Bien sur que l'on peut chez moi j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <option value="<nested:write property="id" />">
    et ça fonctionne très bien !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javascript:test(<bean:write name="documentActionData" property="documentData.id" />;);this.selectedIndex= 0;
    tout ça doit etre dans une balise pour que tu puisse ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <%
    String style = "javascript:test("+TonBEAN.getDocumentData.getID+");this.selectedIndex= 0;";
    %>
    onchange="<%=style%>"

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je viens de supprimer ma dernière réponse ..

    En faite, ta dernière réponse a été la clé de la réussite ... (je ne l'avais pas vu lors de mon dernier post)

    Je vous remercie tous pour votre aide et surtout stela86 qui m'a donné la solution ... et neuromencien

    Encore merci .. je n'hésiterais plus à demander sachant qu'il y a des personnes compétentes sur ce forum ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <%
    String num_id = "javascript:test(this.options[this.selectedIndex].value,"+ documentActionData.getDocumentData().getId() +");this.selectedIndex= 0;";
    %>								
    <html:select name="documentActionData" property="actionDataList" onchange='<%=num_id%>'>
    <html:option value="#">----------------------</html:option>
    <html:options collection="actionDataList" property="name" labelProperty="name"/>
    </html:select>

  9. #9
    Membre régulier Avatar de stela86
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 111
    Points
    111
    Par défaut
    Mais de rien les forums sont là pour aider !
    N'oublie pas le tag

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Points : 165
    Points
    165
    Par défaut
    Citation Envoyé par stela86
    Bien sur que l'on peut chez moi j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <option value="<nested:write property="id" />">
    et ça fonctionne très bien !
    Autant pour mois alors. Comme ça ne marchais pas avec les <bean:write> j'en ai peut être déduis un peu trop vite que ça ne marchais avec aucun tag.
    Ceci dit dans ce cas là il est quand même obligé de repasser en JSP puisqu'il n'à pas l'occasion d'utiliser le tag nested.

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

Discussions similaires

  1. Récupérer les valeurs d'une requête SQL dans un champs html SELECT
    Par tamiii dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/11/2007, 13h27
  2. Réponses: 7
    Dernier message: 21/02/2006, 11h42
  3. [STRUTS] balise <bean:write> dans <html:link>
    Par adrien.nicolet dans le forum Struts 1
    Réponses: 8
    Dernier message: 25/10/2005, 08h56
  4. Struts et <bean:write>
    Par vicros dans le forum Struts 1
    Réponses: 3
    Dernier message: 17/06/2005, 15h37
  5. Réponses: 2
    Dernier message: 26/05/2005, 12h11

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