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 :

dans la jsp setValue ne marche pas avec une ArrayList en paramètre


Sujet :

Struts 1 Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut dans la jsp setValue ne marche pas avec une ArrayList en paramètre
    Bonjour!

    J'ai dans mon form une ArrayList
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<Fonctionnality> fonctionnalities
    que je souhaite remplir. Les objets Fonctionnality sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Fonctionnality {
     
    	private int idFonctionnality;
    	private int idFonctionnalityPere;
    	private String nameFonctionnality;
    	private String pageFonctionnality;
    Mon problème c'est que dans ma balise html:form, quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:hidden property="fonctionnalities" value="<%=group.getFonctionnalities%>"/>
    J'ai une erreur me disant que setValue est applicable que avec des arguments de type String et pas des ArrayList...

    Quelqu'un as-t-il eu le meme genre de soucis svp?

    Anne
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 265
    Points : 284
    Points
    284
    Par défaut
    salut,

    effectivement il faut passer un string pour la value de ton champ hidden. Or, il semble que ta fonction getFunctionalities() renvoie une liste de fonctionnalités (Je suppose car tu n'as pas mis le code de cette fonction).

    Ca marcherait mieux avec un truc du genre getFunctionalities(i).getName() mais je ne sais pas ce que tu veux faire exactement donc voila. En gros, passe un string a ton value !

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut
    Je suis d'accord que si c'est juste pour afficher à l'écran c'est tout simple :
    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
    </div>
    	<br><br><br><br>   
    	<h3 class="adminTitle"><bean:message key="administration.adminGroups.title.listGroups"/></h3>
    	<logic:present name="listGroups">
    	<table class="adminTable">
    		<tr bgcolor="#DAE0D2" align="left">
    			<th><bean:message key="administration.adminGroups.group.text.TitreColGroupId"/></th>
    			<th><bean:message key="administration.adminGroups.group.text.TitreColGroupName"/></th>
    			<th><bean:message key="administration.adminGroups.group.text.TitreColGroupFonctionnalities"/></th>
    			<th><bean:message key="administration.adminGroups.group.button.buttonEdit"/></th>
    			<th><bean:message key="administration.adminGroups.group.button.buttonDelete"/></th>
    		</tr>
    		<logic:iterate id="group" name="listGroups" type="form.AdminGroupForm">
    	    	<tr>
    	    		<html:form action= "/adminGroup" onsubmit="return editOrDeleteGroup(this)">
    					<html:hidden property="whatToDo" value="default"/>
    					<html:hidden property="idProfile" value="<%=group.getIdProfile()%>"/>
    					<html:hidden property="nameProfile" value="<%=group.getNameProfile()%>"/>
    					<td>
                	  		<bean:write name="group" property="idProfile" />
        				</td>
         				<td>
    						<bean:write name="group" property="nameProfile" />
        				</td>
    					<td>
    						<logic:iterate id="autorisation" name="group" property ="fonctionnalities" type="io.classesBase.Fonctionnality">
    							<html:checkbox name="autorisation" property="isAccessible"/>
    							<bean:write name="autorisation" property="nameFonctionnality"/><br>
    						</logic:iterate>
        				</td>
    					<td>
        	         		<input type="image" src="<%=request.getContextPath()%>/jsp/images/edit.jpg" onclick="setWhatToDo(this,'editGroup');">
        				</td>
    					<td>
                 			<input type="image" src="<%=request.getContextPath()%>/jsp/images/delete.jpg" onclick="setWhatToDo(this,'deleteGroup');">
    	    			</td>
    				</html:form>
        		</tr>
    		</logic:iterate>
        </table>
    	</logic:present>
    </div>
    Mais bon, les champs "html:hidden" ca me sert à récupérer dans un formulaire le bean qui est affiché dans la ligne du tableau=> je veux récupérer la liste des Functionnality sous forme d'arraylist.

    Pour l'affichage je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <td>
    						<logic:iterate id="autorisation" name="group" property ="fonctionnalities" type="io.classesBase.Fonctionnality">
    							<html:checkbox name="autorisation" property="isAccessible"/>
    							<bean:write name="autorisation" property="nameFonctionnality"/><br>
    						</logic:iterate>
        				</td>
    mais pour récupérer la même liste que celle que je viens d'afficher je fais comment ?
    Ca ca ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:hidden property="fonctionnalities" value="<%=group.getFonctionnalities%>"/>
    puisque je dois avoir un string?
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    Puisque tu affiches cette liste dans ta JSP, tu dois bien l'avoir quelque part dans ta BD ou je en sais pas quoi, que tu la récupères dans ton Action Struts et qu'en suite tu la stockes dans un scope (request, session, etc.), nous sommes bien d'accord ?
    Donc en pratique, t'as pas vraiment besoin de re-passer cette liste de la JSP vers l'Action, ton but est juste de pouvoir la déterminer. Ainsi, je te conseille de passer juste l'identifiant du groupe qui contient cette liste, ce qui te permet ensuite de la récupérer depuis ta source de données !

    par exemple, dans ta JSP :

    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
     <logic:iterate id="group" name="listGroups" type="form.AdminGroupForm">
        <tr>
            <html:form action="/adminGroup"
                onsubmit="return editOrDeleteGroup(this)"> 
               
                <html:hidden property="idProfile value="<%=group.getIdProfile()%>" />
                
                <td><bean:write name="group" property="idProfile" /></td>
                <td><bean:write name="group" property="nameProfile" /></td>
                <td><logic:iterate id="autorisation" name="group"
                    property="fonctionnalities" type="io.classesBase.Fonctionnality">
                    <html:checkbox name="autorisation" property="isAccessible" />
                    <bean:write name="autorisation" property="nameFonctionnality" />
                    <br>
                </logic:iterate></td>
                <td><input type="image"
                    src="<%=request.getContextPath()%>/jsp/images/edit.jpg"
                    onclick="setWhatToDo(this,'editGroup');"></td>
                <td><input type="image"
                    src="<%=request.getContextPath()%>/jsp/images/delete.jpg"
                    onclick="setWhatToDo(this,'deleteGroup');"></td>
            </html:form>
        </tr>
    </logic:iterate>
    Remarques que je n'ai gardé qu'un seul hidden, celui qui contient l'identifiant du groupe (ou du profil d'ailleurs, à toi de voir ).

    Ensuite, dans l'action Struts associé au path /adminGroup, tu récupères cet identifiant de l'ActionForm, et tu l'utilises pour retrouver le Profil en question ! Pas besoin de tout passer de la JSP à l'action, un simple ID suffit ! Ainsi, tu gagnes en performances (moins de données à envoyer) et tu évites les problèmes liés aux types complexes (listes par exemple !)

    J'espère que j'ai su expliquer la chose !

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut
    Merci!

    Ca marche comme ca
    J'ai du faire de nouveau la récup des infos dans mon action mais bon comme j'ai la primary key de ma table en champ hidden, c'est pas trop compliqué

    Anne
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/08/2011, 16h38
  2. proxy en jsp marche pas avec images
    Par pcanoe dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 21/06/2011, 17h46
  3. Réponses: 2
    Dernier message: 05/02/2010, 16h13
  4. Réponses: 3
    Dernier message: 18/05/2009, 18h57
  5. affichage dans le front buffers ne marche pas!
    Par jamal24 dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/08/2003, 19h14

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