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] ordre d'appel de execute et validate


Sujet :

Struts 1 Java

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 35
    Par défaut [Struts] ordre d'appel de execute et validate
    Bonjour, je débute avec Struts et y a quelque chose qui me chifonne sérieusement : je ne comprends pas l'ordre d'appel des méthodes des Action et ActionForm.

    Mon problème est simple : c'est un petit système de blog, un utilisateur peut poster un commentaire à un message.
    J'ai donc déclaré PostCommentAction et PostCommentForm

    Le problème c'est que l'ordre d'appel des méthodes est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     PostCommentForm.reset() 
    PostCommentForm.validate()
    PostCommentAction.execute()
    Et la la vue est affichée à l'écran...

    Quel intérêt que validate soit appellé avant execute ? Et surtout que validate() soit appellé lors de l'affichage du formulaire (et pas en réponse à l'utilisateur) ?

    Bizarre, voici l'action correspondante telle que je l'ai définie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     <!-- Poster un commentaire -->
    <action path="/site/postcomment"
            type="site.actions.PostCommentAction"
            name="PostCommentForm"
            input="/site/comment.ftl"
            scope="request"
            validate="true">
        <forward name="success" path="/site/comment.ftl"/>
    </action>
    Je ne comprends pas le forward "success", dans l'exemple ci dessus. Moi je me disais qu'il faudrait que path pointe vers l'index du site, pas vers le formulaire ? Dans l'idée "si la validation se passe bien on forward sinon on revient à comment.ftl grâce au paramètre input"

    Est-que quelqu'un peut m'aider ? J'y ai passé des heures...

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 186
    Par défaut
    je suis pas sur de te suivre mais bon
    deja l'interet de faire un validate avant le exexute c le grand interet: pas la peine d'executer ton action si le contenu du formulaire n'est pas valide (il faut que tu ais implémenté la méthode validate() )

    sison pour l'histoire du forward, ou es le pb? quand tu a fini ton action tu forward sur sucess
    le input sert pour savoir ou forwarder si le validate ne marche pas

  3. #3
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    salut en fait une solution consiste à avoir 2 actions.
    Une pour afficher
    Une pour sauver/créer

    Dans la premiere au moment de la déclaration stans le struts-config.xml
    tu déclare validate="false" ainsi pour cette action validate() ne sera pas invoquer automatiquement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        <action
          attribute="issueForm"
          input="/WEB-INF/pages/form/issueForm.jsp"
          name="issueForm"
          path="/displayIssue"
          scope="request"
          validate="false"
          type="net.zekey.teamwork.web.struts.action.DisplayIssueFormAction"
          >

    voila en espérant avoir bien compris le problème.
    Steve

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 35
    Par défaut
    Citation Envoyé par ze_key
    salut en fait une solution consiste à avoir 2 actions.
    Une pour afficher
    Une pour sauver/créer
    voila en espérant avoir bien compris le problème.
    Steve
    Bin t'avais parfaitement compris ! Et c'est ça que moi je comprenais pas - je voulais avoir une seule action.

    Depuis j'ai découvert les MappingDispatchAction et là c'est le pied - j'ai toutes mes actions dans la même classe. C'est propre et je me prends moins les pieds dans le tapis (sans compter que je peux avoir des méthodes communes)

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 30/07/2007, 14h51
  2. [Struts] ordre des éléments dans un tableau de propriétés
    Par zais_ethael dans le forum Struts 1
    Réponses: 2
    Dernier message: 09/05/2006, 15h54
  3. appel de fonction sur validation de formulaire
    Par PAYASS59 dans le forum Langage
    Réponses: 15
    Dernier message: 17/01/2006, 10h09
  4. appel un executable de dos pour vc++
    Par leo13 dans le forum MFC
    Réponses: 6
    Dernier message: 16/06/2004, 23h12
  5. Réponses: 4
    Dernier message: 19/04/2004, 13h41

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