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 :

appel d'une Action sans Formulaire


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Par défaut appel d'une Action sans Formulaire
    Bonjour!

    cette fois j'ai une question concernant le fonctionnement de Struts.

    Est ce que la classe "Action" peut être utilisée sans formulaire ?

    mon objectif c'est de pouvoir lancer un traitement à partir d'un lien puis d'afficher son résultat dans une jsp. (sans bien sûr appeler la méthode qui fait le traitement dans ma jsp!!)

    je ne sais pas si struts permet d'appeler directement une Action ?

    merci d'avance!

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut
    je te repond car j'ai eu la même problematique et debutant sous struts, j'ai du trouver la solution

    voici comment parametrer le fichier struts-config.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        <global-forwards>
            <forward name="ListQualification" path="/ListQualification.do"/>
        </global-forwards>
     
        <action-mappings>
            <action path="/ListQualification" scope="request" type="com.myapp.struts.listQualificationA">
                <forward name="success" path="/ListQualification.jsp"/>
                <forward name="error" path="/Error.jsp"/>
            </action>
        </action-mappings>
    tu appelle donc ton Action en utilisant http://xxx/monappli/ListQualification.do

    cela aura pour effet d'executer ton action.
    dans mon cas, mon action renvoie des données que je dois lister c'est pour cela que j'ai defini un forward sur une JSP (si tout se passe bien dans l'action d'ou le nom "success" sinon c'est une page d'erreur qui s'affiche)


    Bon maintenant si ya plus simple/mieux, comme je disait, je debute mais ça fonctionne.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Par défaut
    salut,
    merci pour ta réponse.
    peux tu me montrer à quoi ça ressemble ton "listQualificationA" ?

  4. #4
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <global-forwards>
            <forward name="ListQualification" path="/ListQualification.do"/>
    </global-forwards>
    tu n'es même pas obligé de te servir de ça !
    on se sert en général (du moins moi) de cette balise pour se rediriger vers une autre page sans passer par une Action.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut
    ben a une action tout ce qu'il y a de plus banal

    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
    64
    65
    66
    67
    68
    69
    /* classes applicatives access oracle */
    import java.sql.*; 
    import java.io.*;
    import java.util.*;
    import java.text.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import composant.pool.*;
    import composant.syslog.*;
    
    /**
     *
     * @author gregory
     * @version
     */
    
    public class listQualificationA extends Action {
        
        /* forward name="success" path="" */
        private final static String SUCCESS = "success";
        private final static String ERROR = "error";
        ConnectionPoolMgr poolManager = ConnectionPoolMgr.getInstance();
        private SysLog syslog;
    
        public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            
            Statement stmt;
            this.syslog = new SysLog("personnel");
            ResultSet rset;
            ArrayList listeQualification = new ArrayList();
            QualificationAF qualification;
            
    //        String user_soc = request.getParameter("user_soc");
            String user_soc = "PERSONNEL";
          
            try{
                Connection conn = poolManager.getConnection("xxxxxx");
                stmt = conn.createStatement();
                StringBuffer sql = new StringBuffer(1048);
    
                // prepare la requete d'ajout de l'equipe à la base
                sql.delete(0,sql.length());
                sql.append("SELECT * FROM \"" + user_soc + "\".QUALIFICATION");
              
                this.syslog.logTrace("-->Listing des équipe (Qualification)");
                rset = stmt.executeQuery (sql.toString());
                while(rset.next()){
                    qualification = new QualificationAF();
                    qualification.setCle(rset.getString(1));
                    qualification.setCategorie(rset.getString(2));
                    qualification.setCoef(rset.getString(3));
                    qualification.setPosition(rset.getString(3));
                    listeQualification.add(qualification);
                }
                rset.close();
                poolManager.freeConnection("xxxxxx", conn);
            }
            catch (Exception e) {
                this.syslog.logError("Impossible d'executer la requete de creation (Qualification)");
                this.syslog.logError("Motif : "+e);
                this.syslog.logError("");
                return mapping.findForward(ERROR);
            }
            request.setAttribute("listeQualification",listeQualification);
            return mapping.findForward(SUCCESS);
        }
    }
    je t'ai epargné les import struts etc, en gras c'est la ligne qui vas justement faire appel a la jsp qui m'affiche les resultats et dans le catch, celle qui gere la page d'erreur sur le même modèle.

    J'ai preferé utiliser un tableau de bean ActionForm pour les resultats afin de beneficier de la souplesse des getters et setters.

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut
    Citation Envoyé par Kawelito
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <global-forwards>
            <forward name="ListQualification" path="/ListQualification.do"/>
    </global-forwards>
    tu n'es même pas obligé de te servir de ça !
    on se sert en général (du moins moi) de cette balise pour se rediriger vers une autre page sans passer par une Action.
    merci du tuyau voila qui vas encore optimiser mes fichiers

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Par défaut
    je me demande pourquoi on passe "ActionForm form" dans les param de excute si on utilise pas déjà une ActionForm ??
    (en + ça marche pas sans ce paramètre !!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut
    Citation Envoyé par don'de
    je me demande pourquoi on passe "ActionForm form" dans les param de excute si on utilise pas déjà une ActionForm ??
    (en + ça marche pas sans ce paramètre !!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)
    je n'en sais trop rien, mais m'est avis que struts est defini comme ça et qu'il faut s'y tenir...

  9. #9
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Car la méthode est défini avec le ActionForm.

    Si tu veux tu peux tu créer une extension de Action qui aura comme méthode
    Et ainsi toute tes actions étendrons ta classe plutot que ActionForm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public ActionForward execute(ActionMapping mapping, HttpServletRequest request, HttpServletResponse response){
             return execute (mapping, null, request, response);
    }

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

Discussions similaires

  1. appel a une action zend ds une formulaire phtml
    Par moukit233 dans le forum Zend Framework
    Réponses: 3
    Dernier message: 30/11/2010, 12h15
  2. Réponses: 38
    Dernier message: 22/03/2007, 16h15
  3. Appeler juste une fonction sans include
    Par laurent_ifips dans le forum Langage
    Réponses: 5
    Dernier message: 22/11/2005, 23h08
  4. [Struts]Executer une action sans ActionForm associé ?
    Par brousaille dans le forum Struts 1
    Réponses: 7
    Dernier message: 19/09/2005, 17h24
  5. Réponses: 4
    Dernier message: 27/04/2004, 14h45

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