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-Layout] liste deroulante


Sujet :

Struts 1 Java

  1. #1
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut [Struts-Layout] liste deroulante
    Bonjour, voila j'affiche trois liste déroulante dans ma page, j'ai repris le code des exemple DemoServeurNews, mais l'étiquette ne s'affiche pas et je voudrais aussi savoir s'il est possible de choisir l'élément de la liste a afficher en premier ou alors je voudrais savoir ce que struts layout décide d'afficher en premier, apparement dans mon cas il me prend le dernier élément de ma liste que je lui passe. Voici le code, si quelqu'un a une idée...
    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
     
    <layout:row>
    	<layout:select key="Environnement" name="critere" property="environnement" styleClass="LABEL" layout="false">
    		<layout:options name="critere" property="environnement" />
    		<layout:option value=""/>
    	</layout:select>
    	<layout:select key="Machine" name="critere" property="machine" styleClass="LABEL" layout="false">
    		<layout:options name="critere" property="machine" />
    		<layout:option value=""/>
    	</layout:select>
    	<layout:select key="Etat" name="critere" property="etat" styleClass="LABEL" layout="false">
    		<layout:options name="critere" property="etat" />
    		<layout:option value=""/>
    	</layout:select>
    </layout:row>
    Merci a tous.

  2. #2
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Une fois ces problèmes d'affichage résolu je voulais savoir s'il était possible d'appeler une action qui suivant ce qui a été séléctionné dans la liste me tri un tableau en affichant uniquement les objects qui contiennent le critère séléctionné dans ma liste déroulante.
    Merci a tous.

  3. #3
    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
    Citation Envoyé par david06600
    Bonjour, voila j'affiche trois liste déroulante dans ma page, j'ai repris le code des exemple DemoServeurNews, mais l'étiquette ne s'affiche pas et je voudrais aussi savoir s'il est possible de choisir l'élément de la liste a afficher en premier ou alors je voudrais savoir ce que struts layout décide d'afficher en premier, apparement dans mon cas il me prend le dernier élément de ma liste que je lui passe. Voici le code, si quelqu'un a une idée...
    Pour que l'étiquette s'affiche, il faut tout simplement supprimer l'option layout="false" dans la balise layout:select, ou la remplacer par layout="true".

    Et sinon, les collections environnement, machine et etat sont de quels types ?

  4. #4
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Salut encore a toi . Ce sont simplement des String.
    Pour que l'étiquette s'affiche, il faut tout simplement supprimer l'option layout="false" dans la balise layout:select, ou la remplacer par layout="true".
    Je l'ai fait mais cela m'affiche les étiquettes et les listes un peu n'importe comment. De plus il y a un emplacement pour une image qui ne s'affiche pas.
    Le texte n'est non plus pas aligné aux listes. Comment amélioré cela de la bonne façon ?
    Merci.

  5. #5
    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
    Ce sont des ArrayList de String ?

    Sinon, est-ce mieux en mettant les layout:select dans un layout:line ?
    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
     
    <layout:line space="true">
    	<layout:select key="Environnement" name="critere" property="environnement" styleClass="LABEL" layout="false">
    		<layout:options name="critere" property="environnement" />
    		<layout:option value=""/>
    	</layout:select>
    	<layout:select key="Machine" name="critere" property="machine" styleClass="LABEL" layout="false">
    		<layout:options name="critere" property="machine" />
    		<layout:option value=""/>
    	</layout:select>
    	<layout:select key="Etat" name="critere" property="etat" styleClass="LABEL" layout="false">
    		<layout:options name="critere" property="etat" />
    		<layout:option value=""/>
    	</layout:select>
    </layout:line>
    Et quel tag utilises-tu pour ton image ?
    Avec un peu de code, ce serait plus facile de t'aider.

  6. #6
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Ce sont des tableaux de string oui.
    j'essaierai avec le tag <layout:line space="true">

    Et quel tag utilises-tu pour ton image ?
    je n'utilise pas de tag pour mon image parce que je n'ai aucune image a mettre, je veux simplement afficher les trois listes avec leur label, mais lorsque je met <.....layout="true" /> j'ai l'impression qu'il essait d'afficher une image, mais il ne trouve pas d'image, parce que je n'en ai pas. Tu comprends?

    Avec un peu de code, ce serait plus facile de t'aider
    Lundi...

  7. #7
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Salut j'ai essayé donc avec le tag <layout:line> et l'alignement de la liste déroulante avec le label n'est pas mieux et il veut toujours m'afficher une image, j'ai l'impression que c'est l'image qu'il affiche si l'attribut isRequired du tag <layout:select> était égal a true. J'ai donc mit isRequired="false" mais cela ne change rien.
    Voici le code html généré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <select name="environnement" class="LABEL">
     
    		<option value="PRODUCTION" selected>PRODUCTION</option>
    <option value="DEVELOPPEMENT" selected>DEVELOPPEMENT</option>
    <option value="TEST" selected>TEST</option>
     
    		<option value=""></option>
     
    	</select><img name="environnementrequired" src="../config/clearpixel.gif"></td>

  8. #8
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    C'est bon j'ai mis le fichier clearpixel.gif qui se trouvait dans le dossier images, dans le dossier config de mon appli.
    Maintenant pour générer une action a partir de mes listes déroulantes il faut que je les places dans une forme c'est bien sa?

  9. #9
    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
    Après vérification, la balise img est générée automatiquement, que l'attribut isRequired soit égal à true ou false. Seul le gif référencé change.

    Je t'avais conseillé l'utilisation du layout:line seulement pour que les listes déroulantes soient sur la même ligne.

    Je ne sais pas ce qui ne te plaît pas dans l'alignement de l'étiquettes avec la liste parce que, pour ma part, le résultat obtenu avec un styleClass="LABEL" me convient.
    Donc, la seule façon je pense de le faire à ton goût, c'est de créer ton propre style css pour les listes déroulantes.

  10. #10
    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
    Citation Envoyé par david06600
    C'est bon j'ai mis le fichier clearpixel.gif qui se trouvait dans le dossier images, dans le dossier config de mon appli.
    J'avais répondu avant de lire ce message.

    Plutôt que de déplacer les images du répertoire images vers config, tu peux copier le fichier Struts-Layout.properties présent dans le jar en Struts-Layout_default.properties sous WEB-INF/classes et préciser le répertoire images ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    # web directory in which are located the images
    directory.images = images
    Citation Envoyé par david06600
    Maintenant pour générer une action a partir de mes listes déroulantes il faut que je les places dans une forme c'est bien sa?
    Effectivement, il faut insérer les tags layout:select dans un tag layout:form.

  11. #11
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Salut a toi
    Je ne sais pas ce qui ne te plaît pas dans l'alignement de l'étiquettes avec la liste parce que, pour ma part, le résultat obtenu avec un styleClass="LABEL" me convient.
    Donc, la seule façon je pense de le faire à ton goût, c'est de créer ton propre style css pour les listes déroulantes.
    Maintenant qu'il trouve l'image tout est bien aligné.


    Citation:
    david06600 a écrit :
    Maintenant pour générer une action a partir de mes listes déroulantes il faut que je les places dans une forme c'est bien sa?
    Effectivement, il faut insérer les tags layout:select dans un tag layout:form.
    Aujourd'hui 13h25
    Ok mais est ce que l'action sera généré dessuite aprés avoir fait ma sélection ou alors il me faut un bouton submit.
    Mes listes déroulantes se trouvent au dessus du tableaux a afficher, et je voudrais que des que je selectionne quelque chose dans la liste mon la page qui affiche mon tableau soit regénéré avec les paramètre de mes liste sans avoir a cliquer sur un bouton submit. Est ce possible ?

  12. #12
    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
    Essaie en ajoutant l'attribut onchange dans le tag layout:select comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="document.forms['taForm'].submit();"

  13. #13
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Ok merci je vais essayer par contre j'aurai peut etre du poser cette question avant mais quel serait selon toi la meilleur façon de procéder ?
    Faire un tri sur mon arraylist dans l'action ou alors essayer de gérer sa dans ma jsp qui affiche ma liste, je sais pas trop encore comment .
    Voici ma liste :
    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
     
    <layout:collection name="listDiffForm" property="jobList" id="job" styleClass="FORM" width="100%">
    		<layout:collectionItem title="[]">
    			<layout:checkbox name="job" property="selected" layout="false" />
    		</layout:collectionItem>
    		<layout:collectionItem title="Nom" property="nom" 
    			href="buildDiff.do" 
    			paramId="nom,etape,machine,oddjobXML" 
    			paramProperty="nom,etape,machine,oddjobXML" />
    		<layout:collectionItem title="Etape" property="etape" />
    		<layout:collectionItem title="Machine" property="machine" />
    		<layout:collectionItem title="D&eacute;marrage" property="demarrage" />
    		<layout:collectionItem title="Reprise" property="reprise" />
    		<layout:collectionItem title="Erreurs" property="erreurs" />
    		<layout:collectionItem title="%trait&eacute;" property="traite" />
    		<layout:collectionItem title="Etat" property="etat" />
    	</layout:collection>
    y a t il un moyen de pouvoir afficher le contenu du layoutItem suivant que la propriété soit égal a un parametre du form bean ?
    Sinon si tu vois une meilleure façon n'hésite pas.
    Merci

  14. #14
    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
    Si tu codes l'attribut onchange dans le tag layout:select comme je te l'ai indiqué plus haut, l'ActionForm sera exécutée ainsi que l'Action.

    Dans l'Action, tu peux donc récupérer l'élément sélectionné et constituer l'ArrayList en fonction de celui-ci.

  15. #15
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut aide sur le tri
    Je suis encore avec mon tri et j'ai des difficultées à trouver une solution donc voila mon action :
    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
     
    public class ListDiffAction extends Action
    {
     
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception 
    	{
     
        	ListDiffForm listForm = (ListDiffForm)form;
     
        	JobHolder h = new JobHolder();
        	Collections.sort(h.getJobList());
     
    	listForm.setJobList(h.getJobList());
     
    	return mapping.findForward("listJob");
        }
    }
    Donc la ma liste est bien trier, mais pour afficher seulement certains éléments de cette liste suivant ce que j'ai auparavant séléctionné dans la liste déroulante, comment extraire de la liste complète seulement ce qui m'intéresse? Est ce que je dois pour cela créer un nouveau tableau ?

  16. #16
    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, par exemple, dans ton Action, il suffit de récupérer l'environnement sélecté via un listForm.getEnvironnement() et si sa valeur n'est pas nulle, faire appel à une méthode équivalente à getJobList mais avec un paramètre environnement qui permette de récupérer la liste des jobs pour l'environnement sélecté.

    Je ne sais pas comment est constitué l'ArrayList dans la méthode getJobList mais si c'est un select sur une table, il suffit d'y rajouter une where clause sur l'environnement sélecté.

  17. #17
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Ok en fait j'itere sur ma liste dans une boucle for, et si un objet de ma liste a un élément égal a ce que je recherche, je le rajoute a une autre liste, que j'ai initialisé auparavant.

  18. #18
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut problème formulaire
    Voici l'erreur que j'ai en ajoutant <layout:form name="taForm" action="....">
    [ServletException in:/critereSelection.jsp] Must specify type attribute if name is specified'
    A quoi correspond le type d'un formulaire?

  19. #19
    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
    Il n'est pas utile de coder le name et le type dans le tag layout:form sachant que le form-bean est déclaré dans le struts-config.xml et qu'il est déclaré dans le mapping de l'Action via l'attribut name.

    Donc, ceci suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:form action="tonAction">

  20. #20
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Merci sa marche nickel avec l'attribut onchange pour mes listes déroulantes, mais j'ai un autre problème maintenant
    Je voudrais dans ma jsp je voudrais qu'il soit afficher soit ma liste complète soit ma liste triée donc je procède de cette manière :
    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
     
    <layout:row>
    		<layout:tabs styleClass="FORM" width="100%" selectedTabKeyName="tab">
    				<layout:tab key="Liste batchs" href="index.jsp?tab=Liste batchs" width="100">
    					<tiles:insert page="/critereSelection.jsp" flush="false" />
    					<logic:empty name="listDiffForm" property="sortedJobList">
    						<tiles:insert page="/listDiff.do" flush="false" />
    					</logic:empty>
    					<logic:notEmpty name="listDiffForm" property="sortedJobList">
    						<tiles:insert page="/liste.jsp" flush="false" />
    					</logic:notEmpty>
    				</layout:tab>
    				<layout:tab key="Détail" href="index.jsp?tab=Détail" width="100">
    					<tiles:insert page="/details.jsp" flush="false" />
    				</layout:tab>
    		</layout:tabs>
    	</layout:row>
    Avec logic:empty et logic:notEmpty pour soit appelé l'action pour généré ma jsp ou soit appelé directement la jsp qui a été généré par l'action de mes listes déroulante, le problème c'est qu'a chaque fois je passe par le tag logic:empty, même si ma forme listDiffForm contient la variable sortedJobList. Et elle n'est pas null car en mode débug je vois bien qu'elle n'est pas null.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Struts-Layout] liste dans datagrid
    Par khaoula_14_05 dans le forum Struts 1
    Réponses: 3
    Dernier message: 03/12/2008, 10h08
  2. [AJAX] ajax,struts et liste deroulante
    Par emenemza dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 03/10/2008, 17h22
  3. Réponses: 2
    Dernier message: 29/06/2007, 11h20
  4. [Struts-Layout] Listes liées
    Par verdi-verda dans le forum Struts 1
    Réponses: 1
    Dernier message: 22/06/2007, 22h15
  5. Réponses: 6
    Dernier message: 27/03/2006, 19h11

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