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 :

Passer dans l'action avant l'affichage


Sujet :

Struts 1 Java

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut Passer dans l'action avant l'affichage
    Bonjour,
    Je travaille sous struts 1.2 (obligé) et je souhaiterais que la première page de mon application soit une page de login avec une liste issue de la base de donnée, donc il me faudrait passer dans le contrôleur avant d'afficher la page. Comment faire?
    Merci d'avance

  2. #2
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    Hello,

    Tu as plusieurs solutions:

    1) tu fais 2 actions différentes: 1 pour le pré-remplissage de ta jsp, l'autre pour le submit.

    2) Tu fais une seule action mais une dispatch. Tu passe un paramètre qui va définir quelle méthode tu vas appeler. Par exemple, quand tu appelle ta page, tu passe 'pre' et dans la méthode pre, tu mets tout ce qu'il faut en requête (ta liste). Et quand tu fais ton submit, tu passe 'post' et tu fais ton traitement dans ta méthode post.

    3) tu écris un custom tag qui créé ta liste.

    Voilà :-)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut
    Merci pour ta réponse rapide, je vais tester la deuxième solution

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut
    J'ai un petit soucis :
    J'obtiens l'erreur suivante :
    ServletException : Action[/DispatchLogon] does not contain specified method
    Voici mon struts config :
    Global forwards :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <forward name="welcome" path="/DispatchLogon.do?parameter=load"/>

    actions:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <action path="/DispatchLogon" type="fr.omnium.eurodif.action.LogonAction"
    input="/pages/logonForm.jsp"
    parameter="parameter"
    name="logonForm"
    scope="request"
    validate="false">
    <forward name="logon" path="/pages/logonForm.jsp"/>
    </action>
    LogonAction extends DispatchAction et a bien une méthode load(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
    qui forward sur logon.

    Quelqu'un sait d'où ca peut venir?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut
    Je patauge complètement... Ou se trouvent les logs de tomcat à part ceux affichés sur la console?

  6. #6
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    Salut,

    Sorry de répondre si tard ^^

    Sinon, je ne vois pas trop... ça a l'air correct.

    3 choses:
    - Soit "parameter" est mal choisi comme nom de variable. Essaye de le changer en autre chose.
    - Soit "load" est mal choisi comme nom de méthode. Genre c'est un truc réservé, essaye aussi de changer.
    - Soit tu as eu des erreurs de compil et ta classe (celle ou tu as ajouté la méthode 'load') n'est pas correcte dans ton war :-)

    Perso je penche plus pour la 3 ième

    Sinon, pour les logs, tu peux regarder du côté de:

    ${TOMCAT_HOME}\jakarta-tomcat-x.x.xx\logs

    mais ça dépend comment tu as configuré tout ça ...

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut
    Citation Envoyé par bidi Voir le message
    Salut,

    Sorry de répondre si tard ^^

    Sinon, je ne vois pas trop... ça a l'air correct.

    3 choses:
    - Soit "parameter" est mal choisi comme nom de variable. Essaye de le changer en autre chose.
    - Soit "load" est mal choisi comme nom de méthode. Genre c'est un truc réservé, essaye aussi de changer.
    - Soit tu as eu des erreurs de compil et ta classe (celle ou tu as ajouté la méthode 'load') n'est pas correcte dans ton war :-)

    Perso je penche plus pour la 3 ième

    Sinon, pour les logs, tu peux regarder du côté de:

    ${TOMCAT_HOME}\jakarta-tomcat-x.x.xx\logs

    mais ça dépend comment tu as configuré tout ça ...
    Merci pour ta réponse, je pencherais aussi pour la 3ème, mais comment voir cela? il faut décompiler la classe générée?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut
    Pour info voici ma classe :
    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
     
    package fr.omnium.eurodif.action;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
     
    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.actions.DispatchAction;
     
    import fr.omnium.eurodif.actionform.LogonForm;
    import fr.omnium.eurodif.javabeans.Logon;
     
    public class LogonAction extends DispatchAction {
     
    	public ActionForward load(ActionMapping mapping, ActionForm form,
    			ServletRequest request, ServletResponse response) throws IOException, ServletException {
     
    		request.setAttribute("test", "test");
    		return mapping.findForward("logon");
    	}
    }

  9. #9
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    Soit tu décompile avec un truc genre Cavaj ou jad

    soit tu regarde la date de la classe de dernière modif dans ton war. :-)

    Mais bon, si tu veux être 100% sûr, décompile

  10. #10
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    Essaye ça plutôt ^^

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

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut
    Citation Envoyé par bidi Voir le message
    Essaye ça plutôt ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public ActionForward load(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    En effet ^^ merci beaucoup

  12. #12
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    de rien

    bon courage! ^^

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    Citation Envoyé par bidi Voir le message
    Hello,

    Tu as plusieurs solutions:

    1) tu fais 2 actions différentes: 1 pour le pré-remplissage de ta jsp, l'autre pour le submit.

    2) Tu fais une seule action mais une dispatch. Tu passe un paramètre qui va définir quelle méthode tu vas appeler. Par exemple, quand tu appelle ta page, tu passe 'pre' et dans la méthode pre, tu mets tout ce qu'il faut en requête (ta liste). Et quand tu fais ton submit, tu passe 'post' et tu fais ton traitement dans ta méthode post.

    3) tu écris un custom tag qui créé ta liste.

    Voilà :-)
    Est ce que quelqu'un pourrait détailler un peu plus la 1ère solution?
    par exemple comment passer les informations de l'action du pré-remplissage vers la page jsp?

  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
    Tu peux définir deux Actions liées au même formulaire dans le struts-config.xml.

    une qui initialise le formulaire :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action path="/initAction" type="unpackage.InitAction"
            name="formBean1" scope="session" validate="false">
          <forward name="success" path="/maPage1.jsp"/>
    </action>
    une qui s'exécute au submit du formulaire :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action path="/processAction" type="unpackage.ProcessAction"
            name="formBean1" scope="session" validate="true" input="/maPage1.jsp">
          <forward name="success" path="/maPage2.jsp"/>
    </action>
    Et dans l'Action qui initialise le formulaire, tu pré-remplis les propriétés du formulaire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TonActionForm tonActionForm=(TonActionForm) form ;
    tonActionForm.setPropriete1("valeur1") ;
    tonActionForm.setPropriete2("valeur2") ;

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    merci pour l'explication je vais essayer ça

  16. #16
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    Je suis parvenu a utiliser cette méthode pour les champs de texts (juste pour essayer)
    Mais lorsque j'ai voulu l'essayer pour les listes déroulantes j'ai coincé.

    les listes je les ai déclaré dans la page jsp comme ça

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html:form action="ajouterModule">
          <html:select property="professeurSelectionne">
                                <html:options property="professeurCollection" />
           </html:select>
    </html:form>

    mon action de pré-remplissage comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
     
            AjouterModuleActionForm f = (AjouterModuleActionForm)form;
     
            String profs[] = {"p1","p2"};
     
     
            f.setOptionCollection(profs);
     
            return mapping.findForward(SUCCESS);
        }
    pour les getters et setters de l'actionForm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public String[] getProfesseurCollection() {
            return professeurCollection;
        }
     
    public void setProfesseurCollection(String[] string) {
            professeurCollection = string;
        }
    lorsque je lance l'action du pré-remplissage j'obtiens le message d'erreur suivant

    javax.servlet.ServletException: javax.servlet.jsp.JspException: Property professeurCollection returned a null value

    Je pense que le problème vient du passage de la collection au formulaire (déjà je suis pas sur si je dois le faire comme ça) et j'arrive pas à corriger le problème.
    Merci d'avance pour votre aide.

  17. #17
    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 faut utiliser le setter sur la propriété professeurCollection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           f.setProfesseurCollection(profs);

  18. #18
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    j'ai déjà fait ça, je me suis juste trompé en copiant le code sur le forum (j'ai deux listes profs et options). D'autres pistes?

  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
    Ce n'est pas plutôt à la soumission du formulaire que tu as ce message d'erreur ?

    Peux-tu montrer le mapping des deux Actions liées à AjouterModuleActionForm ?

  20. #20
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    le voici :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <action path="/admin/ajouterModule"
                    type="com.myapp.struts.preAjoutModule"
                    name="AjouterModuleActionForm"
                    scope="session"
                    validate="false">
                <forward name="ajoutModule" path="/admin/ajouterModule.jsp"/>
     </action>
     
     <action path="/ajouterModule"
                    type="com.myapp.struts.AjouterModuleAction"
                    name="AjouterModuleActionForm"
                    scope="session"
                    validate="true"
                    input="/admin/ajouterModule.jsp" />

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

Discussions similaires

  1. passer les parametre de la jsp dans l'action
    Par scolopendra dans le forum Frameworks Web
    Réponses: 2
    Dernier message: 07/11/2008, 16h31
  2. Réponses: 2
    Dernier message: 06/06/2008, 12h31
  3. Réponses: 7
    Dernier message: 25/05/2008, 17h06
  4. Récuperer des données dans Repeater avant l'affichage
    Par Pedro Varela dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/08/2007, 12h47
  5. Passer un tableau Javascript dans une action JAVA
    Par lili2704 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/08/2007, 11h44

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