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 2 Java Discussion :

Faire passer un objet d'une action a une autre


Sujet :

Struts 2 Java

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Quand j'essaye de faire passer un objet d'une action a une autre via une page jsp j'ai des erreurs du genre "no action defined for result input".

    Qu'est ce que le result de type "input"?
    Comment faire passer un objet d'une action a l'autre via les pages jsp ? (note: j'y arrive tres bien avec les types primaires graces aux %{maVar} )

    Je reformule de facon plus simple:
    Comment récupérer un objet d'une page dans une action ?

    merci

  2. #2
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    c'est une mauvaise pratique. Tu dois plutot envoyer a ton action un identifiant permettant de retrouver ton objet.

  3. #3
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Oui mais la c'est plus complique que cela. C'est une liste que je j'affiche et que je voudrai trier. Pour la trier il faut donc que je la récupére.

    Mais est ce que c'est possible?

    merci

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Citation Envoyé par JoloKossovar Voir le message
    c'est une mauvaise pratique. Tu dois plutot envoyer a ton action un identifiant permettant de retrouver ton objet.
    Quand tu dis
    c'est une mauvaise pratique
    c'est qu'on peut le faire n'est ce pas?

    Si oui comment ?

  5. #5
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Ben tu peux utiliser la session mais c laid ^^
    session.setAttribute / session.getAttribute

    Pourquoi ne passe tu pas par une action pour récupérer ta liste, la trier et ensuite la donner a ta jsp. Une jsp n'est pas faite pour faire des traitements, simplement pour afficher.

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Citation Envoyé par JoloKossovar Voir le message
    Pourquoi ne passe tu pas par une action pour récupérer ta liste, la trier et ensuite la donner a ta jsp. Une jsp n'est pas faite pour faire des traitements, simplement pour afficher.
    Quand tu dis "récupérer ta liste" tu veux dire "la créer" n'est ce pas ?

    Car ce que je fais, et je pense que c'est une bonne chose, c'est que j'ai une seule page jsp pour afficher une liste du meme objet mais avec des criteres différents (donc des liste différentes).

    Ce que j'aimerais ensuite faire, c'est trier cette liste selon un critere.

    Pour cela j'ai besoin de savoir qu'est ce que j'ai affiché ou, du moins, l'action par laquelle je suis passé pour afficher ma liste ...

    suis je clair ?

    merci

  7. #7
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Oui, et je ne vois pas pourquoi ca t'oblige a passer ta liste d'unh jsp a l'autre sans passer par une action.

    Ton action fera un forward avec la liste placé dans un attribut de la requête. A toi de modifier la liste selon les critères que tu souhaite, mais encore une fois , dans l'action.

  8. #8
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Citation Envoyé par JoloKossovar Voir le message
    Oui, et je ne vois pas pourquoi ca t'oblige a passer ta liste d'unh jsp a l'autre sans passer par une action.
    Mais je veux passer par une action !
    Mais cette action a besoin de savoir deux choses:
    - le critere de tri // pas de probleme
    - la liste a trier

    N'est ce pas ?

    Ton action fera un forward avec la liste placé dans un attribut de la requête. A toi de modifier la liste selon les critères que tu souhaite, mais encore une fois , dans l'action.
    Si je comprends bien, c'est exactement ce que j'essaye de faire : récupérer ma liste dans une action.

    merci

  9. #9
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Oki, alors si tu passe par une action pas besoin d utiliser de session. A moins que tu n'es aucun moyen de récupérer la liste dans ton action. Dans ce cas, tu placera la liste dans la session et ainsi elle sera accessible a n'importe quelle moment.
    Mais cette liste vient d ou à l'origine ?

  10. #10
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Citation Envoyé par piotrr Voir le message
    Mais je veux passer par une action !
    Mais cette action a besoin de savoir deux choses:
    - le critere de tri // pas de probleme
    - la liste a trier

    N'est ce pas ?



    Si je comprends bien, c'est exactement ce que j'essaye de faire : récupérer ma liste dans une action.

    merci
    Effectivement, tu as besoin de connaitre le critere de tri, et ensuite tu as deux approches :
    1) La liste est créée une seule fois (la première fois) et ensuite tu réutilises toujours la même liste. Pour cela, il faut utiliser la Session comme expliqué précédemment.
    Avantage : rapidité
    Inconvénient : la liste reste tout le temps en mémoire de ton application, et donc si elle est volumineuse, une liste par utilisateur, ça va vite pour te planter un serveur ...
    2) La liste est recréée à chaque fois. Dans ce cas, il faut que tu récupères à chaque appel les critères permettant de créer la liste et les critères permettant de la trier

  11. #11
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Ok eje vais etre plus clair.

    J'ai des actions du genre DisplayListGentilsTrucAction.java, DisplayListMechantsTrucAction.java ...


    Ces actions me menent a une page: afficherListeTruc.jsp qui récupere une liste de trucs de l'action qui l'a géneré (DisplayListGentilsTrucAction.java, DisplayListMechantsTrucAction.java )

    Jusque la pas de probleme.

    Seulement mes trucs ont un attribut nom et date que j'affiche sur ma page afficherListeTruc.jsp.

    Par défaut ces trucs sont triés par nom croissant.

    Ce que j'aimerai faire c'est de mettre des liens sur afficherListetruc.jsp pour trier cette liste différement.

    Pour cela il faut que j'appelle une nouvelle action "TrierListTrucsAction.java".
    Mais cette action a besoin de connaitre la liste a trier ... car cette liste peut avoir été génerée avec une action DisplayListGentilsTrucAction.java ou bien DisplayListMechantsTrucAction.java.

    La réside tout le probleme.

    A moins que vous ne voyez ue autre facon de faire ...

    merci beaucoup

    P.S: désolé pour l'exemple un peu bebete

  12. #12
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Pas de souci, ton exemple n'est pas bebete, et totalement clair.
    A mon sens tu raisonnes mal avec ta troisième action
    La manière la plus simple de procéder est que tes actions DisplayListGentilsTrucAction et DisplayListMechantsTrucAction prennent en paramètre le champ sur lequel tu veux trier et l'ordre (croissant/décroissant) et redonnes directement une liste triées à ta jsp.

  13. #13
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Ok c'est une solution mais comment je sais si je dois appeller DisplayListMechantsTrucAction ou DisplayListGentilsTrucAction a partir de ma jsp ?

  14. #14
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Ben, ca dépend de ce que font tes deux actions ...

  15. #15
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Citation Envoyé par piotrr Voir le message
    Ok c'est une solution mais comment je sais si je dois appeller DisplayListMechantsTrucAction ou DisplayListGentilsTrucAction a partir de ma jsp ?
    Je vois ton souci oui. Comme tu as une unique jsp qui manipule la même liste, qu'elle ait été générée par DisplayListMechantsTrucAction ou DisplayListGentilsTrucAction tu as le même lien. Sauf si tes deux servlets ne génèrent pas que la table mais génèrent aussi une autre variable (par exemple servletURL).

  16. #16
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Donc je récupere l'url de mon DisplayTrucAction dans ma page jsp c'est cela ?

    Mais alors de quel type sera cet url, String ?

    Ensuite je donne cet url en parametre a mon lien c'est cela ?

  17. #17
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Oui, ça sera du type String
    Après pour construire le lien, tu prends cette variable et tu lui rajoutes des paramètres (pas l'inverse).

    Exemple :
    Disons que DisplayListMechantsTrucAction a pour url /mechants et DisplayListGentilsTrucAction a pour url /gentils.
    Ton lien peut etre /mechants?sort=nom&sortOrder=ascending par exemple

  18. #18
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Ok mais cela veut dire que dans chaque action DisplayMechantTruc et DisplayGentilTruc je dois redéfinir les la méthodes pour recupérer ma liste afin qu'elle prenne en compte le tri (attribut et ordre)?

  19. #19
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Oui, tu dois dans les deux servlets gérer le tri également

  20. #20
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Utilise une classe abstraite, avec deux méthodes abstraites (une pour définir le tri l autre pour redefinir l'url sur la jsp), étendu par tes deux actions.Dans des deux actions tu redéfini la méthode tri en fonction de tes tries necessaire, et aussi une méthode qui te permet de redéfinir le lien pour définir l'action appelée par la jsp.

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

Discussions similaires

  1. Exécuter une action dans une action
    Par mattheox dans le forum Struts 1
    Réponses: 1
    Dernier message: 17/07/2008, 15h44
  2. Détecter une action d'une classe dans une autre classe
    Par Pirokkk dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 12/05/2008, 12h14
  3. Réponses: 1
    Dernier message: 19/02/2007, 16h58
  4. Appeler une action dans une action
    Par japz dans le forum Struts 1
    Réponses: 2
    Dernier message: 25/01/2007, 08h48
  5. [Struts] Appel d'une action dans une action
    Par cosmos38240 dans le forum Struts 1
    Réponses: 2
    Dernier message: 16/02/2006, 15h52

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