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 :

Récupérer httpServletRequest dans bean formulaire


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Récupérer httpServletRequest dans bean formulaire
    Bonjour,

    voici mon pb:
    J'aimerais récupérer le httpServletRequest dans mon bean formulaire et je n'arrive pas a trouver comment faire. (sachant que je ne peux pas le récupérer dans la classe Action comme cela se fait habituellement/facilement).

    J'explique pourquoi je veux faire ca car je m'y prend peut etre mal...

    En fait j'ai une page jsp ou j'affiche les informations d'un client. Ces informations sont affichées de cette manière:

    Nom______|_Prenom___|__Date naissance__|
    --------------------------------------------
    delace______jean__________13/54/4059
    dupond_____paul___________34/34/4434


    Je voudrais pouvoir afficher ces clients en les triant par nom.
    J'ai donc fait un lien sur "Nom" de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:link page="/listeClients.do?orderBy=Nom">
    	Nom
    </html:link>
    Ce code permet donc de réafficher la page courante mais en changeant le paramètre orderBy.

    J'aimerais donc récupérer ce paramètre orderBy dans le formulaire pour pouvoir ensuite faire ma requete dans ma bdd et renvoyer ma liste de clients ordonnée. Ce qui a priori devrait être possible par un request.getParameter mais pour ca il faut le httpServletRequest que je ne sais pas comment récupérer..


    J'espère avoir été claire.. si quelqu'un a une idée!
    merci

  2. #2
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    Je suis pas sûr que ce soit ce que tu attend mais tu peux acceder à la requête http depuis ta JSP de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <%
    	String orderByValue = (String) request.getAttribute("orderBy");
    %>
    et l'utiliser ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:link page="/listeClients.do?orderBy=<=orderByValue %>">
    	Nom
    </html:link>

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Et non malheureusement cela n'est pas ca... :s

    Moi je voudrais, à partir d'une jsp, passer un attribut (orderBy) en paramètre afin d'y avoir accès dans l'ActionForm de la jsp suivante.

    Le truc c'est qu'habituellement pour accéder aux paramètres c'est facile à partir d'une jsp (comme tu l'a dis) ou à partir de la class Action car la méthode execute a comme paramètre ce fameux HttpServletRequest.
    Mais dans mon cas je suis dans une classe ActionForm et n'ait donc pas cet objet HttpServletRequest à disposition.

    Voila si ca peut aider a déclencher une vague de réponse... :p

  4. #4
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    Il suffit de definir orderBy comme un membre de ton ActionForm, non ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    salut,
    Ton lien "/listeClients.do?orderBy=Nom" ne pointe pas vers une page JSP mais vers l'ActionMapping que tu as défini comme "/listeClients" , donc la requête arrive d'abord à l'Action associée avant que le résultat ne soit réaffiché. Ce qui veut dire que tu peux très bien récupérer ce paramètre "orderBy" dans l'Action, faire la requête bdd, remplir l'ActionForm, puis forwarder vers la même page jsp qui pourra alors afficher la liste triée ...
    SCJP 5 / SCBCD 1.3 Certified

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Tout d'abord merci pour vos réponses, voici ce que j'ai fait du coup:

    j'ai ma page listeClients.jsp avec mon lien comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html:form action="listeClients-action">
    	<html:link page="/listeClients.do?order=Nom">
    		Nom
    	</html:link></center>
    </html:form>
    Du coup je récupère le paramètre passé précédemment dans ma classe ListeClientsAction.java comme ceci:
    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
     
    public class ListeClientsAction extends Action{
        public ActionForward execute( 	ActionMapping mapping,
                						ActionForm form,
                						HttpServletRequest request,
                						HttpServletResponse response)
                						throws Exception
        {
        		String orderVar = request.getParameter("order");
        		ListeClientsForm listeClientsForm = (ListeClientsForm)form;
        		listeClientsForm.setOrder(orderVar);
     
        		//GestionClient gc= new GestionClient();
        		//listeClientsForm.setListeClients(gc.getClients(orderVar));
     
        		return mapping.findForward("success");
        }
     
    }
    enfin pour information voici mon fichier formulaire ListeClientsForm.java:
    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
     
    public class ListeClientsForm extends ActionForm
    {
    	private static final long serialVersionUID = 1L;
     
    	private ArrayList<ElfClient> listeClients = new ArrayList<ElfClient>();
    	private String choix;
    	private String order="nom";
     
    	public ArrayList getListeClients() {
    		GestionClient gestionCli=new GestionClient();
    		setListeClients( gestionCli.getClients(order) );
    		return listeClients;
    	}
     
    	public void setListeClients(ArrayList<ElfClient> client) {
    		this.listeClients = client;
    	}
     
    	public String getChoix(){
    		return choix;
    	}
     
    	public void setChoix(String choix)
    	{
    	   this.choix = choix;
    	}
     
    	public String getOrder(){
    		return order;
    	}
     
    	public void setOrder(String order)
    	{
    	   this.order = order;
    	}
     
    	public void reset(ActionMapping mapping, HttpServletRequest request) {
    		listeClients = new ArrayList<ElfClient>();
    		choix=new String();
    	}
    }
    Le truc c'est que quand je clique sur mon lien "nom" ca ne trie rien du tout. Je n'ai pas l'impression qu'il passe réellement par la classe Action comme tu le dis (mais je me trompe peut etre) et du coup j'ai toujours la meme page avec les clients non triés.

    Voili voilou si qqn sait d'ou vient mon erreur ca serait cool

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Bonsoir,

    un problème de casse ?
    order=Nom
    et "nom"

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Alors non ce n'est pas un pb de casse. (nom ou Nom cela ne change rien car c'est ce que j'utilise dans ma requete sql) En effet "order by nom" ou "order by Nom" donne le meme résultat.

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Rectification :

    Quand tu valides ton formulaire, tu passes d'abord par l'ActionForm (la fonction reset la première si elle est définie) et ensuite dans l'Action (si la fonction validate (de l'ActionForm) n'a pas renvoyé d'erreur bien sûr)...

    Quand tu écris href="/monControleur.do?monParametre=valeur1", tu peux soit :
    - définir une propriété monParametre avec un 'getter' getMonParametre() et un 'setter' setMonParametre(String v) dans ton ActionForm, struts s'occupera de charger la valeur...
    - faire dans l'Action un String v = request.getParameter("monParametre"), comme tu le faisais...

    Le plus simple serait de mettre un point d'arrêt dans ton code pour voir ce qu'il fait... Tu utilises quoi comme environnement de développement ?


    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Ahhh !!! Merci Obutterlin !

    Effectivement j'ai été induite en erreur. On passe effectivement d'abord dans ActionForm puis dans Action. En fait ta phrase
    (la fonction reset la première si elle est définie)
    m'a permis de trouver comment faire.

    J'ai donc changé le code de la fonction reset comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void reset(ActionMapping mapping, HttpServletRequest request) {
    	listeClients = new ArrayList<ElfClient>();
    	choix=new String();
    	setOrder(request.getParameter("order"));
    }
    J'ai donc effectivement accès a HttpServletRequest dans un fichier ActionForm à partir de la fonction reset! Ca marche niquel Merki !

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

Discussions similaires

  1. Récupérer getElementById dans un formulaire
    Par petchi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/11/2014, 02h33
  2. Récupérer date dans un formulaire
    Par hartecel dans le forum Langage
    Réponses: 5
    Dernier message: 16/06/2008, 10h47
  3. Récupérer données dans un formulaire continu
    Par benazerty dans le forum Access
    Réponses: 1
    Dernier message: 12/09/2006, 17h44
  4. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44
  5. Réponses: 2
    Dernier message: 11/12/2004, 21h20

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