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] Besoin d'aide pour organiser formulaires/actions


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut [Struts] Besoin d'aide pour organiser formulaires/actions
    Bonjour,

    Je débute en Struts, et je commence à comprendre le mécanisme, par contre j'ai du mal à determiner combien d'ActionForm créer, etc...

    J'ai une vue dans laquelle j'ai plusieurs boutons :



    Voici le code de la vue :

    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
     
    <br />
    <h3>Arrets maladie de l'agent <bean:write name="agent" property="nom"/> <bean:write name="agent" property="prenom"/></h3>
     
     <logic:empty name= "listeArrets" property="listeArretsAgent">
         Cet agent n'a encore posé aucun arrêt maladie.
     </logic:empty>
     
    <form action="ajouterArret">
        <input type=hidden name=noAgent value=<bean:write name="agent" property="noAgent"/>/>    
        <html:submit>Créer un nouvel arrêt initial</html:submit>
    </form>
     
     <logic:notEmpty name= "listeArrets" property="listeArretsAgent">
         <form action="traiterArrets">
             <table>
                 <thead>
                     <tr class="enteteTabArrets">
                         <th></th>
                         <th>no d'arret</th>
                         <th>Type d'arret</th>
                         <th>Motif</th>
                         <th>Début</th>
                         <th>Fin</th>
                         <th>Commentaire</th>
                         <th>Contrôle</th>
                         <th>Ajouté par</th>
                         <th>Date ajout</th>
                     </tr>
                 </thead>
                 <tbody>
                     <logic:iterate id="arret" name= "listeArrets" property="listeArretsAgent">
                         <logic:equal name="arret" property="typeArret" value="Initial">
                             <tr class="ligneArretInitial">
                         </logic:equal>
                         <logic:equal name="arret" property="typeArret" value="Prolongation">
                             <tr class="ligneArretProlongation">
                         </logic:equal>
                             <td><input type="radio" name="arretChoisi" value="<bean:write name="arret" property="noArret"/>" /></td>
                             <td><bean:write name="arret" property="noArret"/></td>
                             <td><bean:write name="arret" property="typeArret"/></td>
                             <td><bean:write name="arret" property="libelleMotif"/></td>
                             <td><bean:write name="arret" property="dateDebut"/></td>
                             <td><bean:write name="arret" property="dateFin"/></td>
                             <td><bean:write name="arret" property="commentaire"/></td>
                             <td><bean:write name="arret" property="dateControle"/></td>
                             <td><bean:write name="arret" property="ajoutePar"/></td>
                             <td><bean:write name="arret" property="dateAjout"/></td>                       
     
                             <logic:equal name="arret" property="typeArret" value="Initial">                
                                 <td> <html:submit>Paiements</html:submit></td>
                                 <td> <html:submit>Prolonger</html:submit></td>
                             </logic:equal>                      
                         </tr>                    
                     </logic:iterate>       
                 </tbody>
             </table>
             <br />
             Selectionnez un arrêt, puis choisissez une action ci-dessous :
             <html:submit>Supprimer</html:submit>
             <html:submit>Modifier</html:submit>      
         </form>   
     </logic:notEmpty>
    Ce que je me demande, c'est si je dois créer un BeanActionForm Struts pour cette vue, et ensuite si je dois créer plutot plusieurs Action donc en fonction des 2 formulaires que j'ai mis ou si je dois tout faire dans le même formulaire puis dans l'Action tester sur quel bouton on a cliqué afin de réagir en fonction.

    Merci d'avance !

  2. #2
    Membre régulier Avatar de dedeloux
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 104
    Points : 75
    Points
    75
    Par défaut
    Salut !!
    Je développe également sous Struts et réalise une page qui ressemble à peu près à la tienne.

    Normalement, pour chaque page JSP on ne définit qu'une seule classe Action. Il faut donc que tu traites toutes les actions associées à tes boutons dans la même classe Action (et donc définir pour chacun d'eux une action).

    Si tu veux de l'aide pour créer tes actions ou autre, n'hésite pas. Je l'ai fait et ça marche très bien.

    Bon courage.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    Bonjour,

    merci beaucoup pour ta réponse

    Donc dans la méthode exectue() je teste avec des if ou un switch quel bouton a été appuyé, et j'agis en fonction c'est ca?

    tu sais comment je fais pour récupérer la valeur du bouton?

  4. #4
    Membre régulier Avatar de dedeloux
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 104
    Points : 75
    Points
    75
    Par défaut
    Le plus simple c'est que je te donnne un exemple concret :

    Alors voici le code de mon bouton dans ma page jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:submit property="addition"><bean:message key="admin.user.button.addition" /></html:submit>
    Ensuite dans mon bean de formulaire associé à ma page je définis une proprieté comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public static final String ADDITION_ACTION = "addition";
    Pour cette string je fais setter de cette manière (toujours dans mon bean de formulaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public final void setAddition(String pAction) {
    		if (pAction != null) {
    			setAction(ADDITION_ACTION);
    		}
    	}
    Ma méthode setAction fait référence à l'action de struts org.apache.struts.action.ActionForm; il faut que ton bean de formulaire extends ActionForm.

    Ensuite je récupère l'action de mon bouton dans ma classe d'action associée à ma page 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
    25
    26
     
    protected ActionForward doExecute(ActionMapping pMapping, ActionForm pForm, HttpServletRequest pRequest,
                HttpServletResponse pResponse) throws ApplicationException {
     
            ListForm form = (ListForm) pForm;
            ActionForward forward = pMapping.findForward("success"); 
     
            form.setCurrentPage(1);
     
           if (!StrutsUtils.executePageAction(form)) {
               // addition action
               if(ListForm.ADDITION_ACTION.equalsIgnoreCase(form.getAction())){
            	forward=doAdditionAction(pMapping, form, pRequest, pResponse);
            }
           }        
            return forward;        
        }
     
    		private ActionForward doAdditionAction(ActionMapping pMapping, ListForm pForm, HttpServletRequest pRequest,
    	        HttpServletResponse pResponse) throws ApplicationException {
     
    			ActionForward forward = pMapping.findForward("addition");
     
    			return forward;
    	}
    }
    L'action associée au forward est définie dans le fichier Struts-config.xml de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    action path="/adminUserList" type="org.springframework.web.struts.DelegatingActionProxy" 
    			input=".admin.user.list"
    			name="adminUserListForm"
    			scope="session"
    			validate="false">
    			<exception key="dummy" scope="request" type="fr.legrand.framework.exception.ApplicationException" 
    				handler="fr.legrand.framework.web.exception.DefaultExceptionHandler"
    			/>
    			<forward name="success" path=".admin.user.list" />
    			<forward name="addition" path="/adminUserAddition.do" />					</action>
    Bien sur l'exemple que j'ai mis fait référence à mon code et tu n'as peut être pas la même façon de coder mais tu as les grandes étapes et tu devrais pouvoir t'en sortir. Si tu as un problème, n'hésite pas.

    A plus.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    Re,

    ca y est j'ai résolu mon problème entre-temps en utilisant la classe LookupDispatchAction.
    C'est une classe qui te permet d'avoir plusieurs execute() et cela en fonction du bouton submit sur lequel l'utilisateur a cliqué, c'est très pratique vu que tu as une méthode execute par bouton, ce qui segmente bien tes actions et tes forwards.

    en tout cas merci beaucoup pour ton code et ton aide !

Discussions similaires

  1. [AC-2003] Besoin d'aide pour un formulaire de recherche
    Par pierrelyon dans le forum IHM
    Réponses: 3
    Dernier message: 03/06/2010, 16h52
  2. besoin d'aide pour mettre formulaire en ligne
    Par antakini dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/01/2010, 22h03
  3. Besoin d'aide pour un formulaire Access
    Par couellet dans le forum IHM
    Réponses: 4
    Dernier message: 20/07/2007, 15h04

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