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] Paramètre en requête depuis la servlet


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut [Struts] Paramètre en requête depuis la servlet
    Bonjour,

    je cherche à ajouter un paramètre de requête depuis ma servlet afin qu'un paramètre "methode" soit accessible à ma page JSP vers laquelle je forwarde le controle, puis dans laquelle je fais un test logique sur ce paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    logic:match parameter="methode" value="consulter"
    Je crois toutefois que je peux la tester avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    logic:match name="methode" value="consulter"
    J'ai déjà essayé avec request.setAttribute mais ca ne me crée pas l'équivalent d'un paramètre de requête...[/code]

  2. #2
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 366
    Points
    1 366
    Par défaut
    • Comment enrichir un lien HTML de parametres avec Struts ?

    Si la valeur à passer se trouve dans un bean, il faut récupérer celle-ci dans un bean local avec le tag <bean :define>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <bean:define id="myBeanValue" name="myBean" property="myProperty" />
    <html:link href="action.do?prop=${myBeanValue}" />
    Si la (ou les valeurs) à passer se trouve dans un bean connu, on peut utiliser les attributs paramId et paramName.
    paramId correspond au nom du paramètre à passer, et paramName au nom du bean qui contient la valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link href="action.do?” paramId=”prop” paramName=”myBean”/>
    Si ce bean ne contient pas que la dite propriété:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link href="action.do?” paramId=”myProperty” paramName=”myBean” paramProperty=”myProperty”/>
    Si la valeur est statique ou connue, il suffit d’enrichir l’url à la main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link href="action.do?prop=”thepropvalue" />
    Si l’on souhaite passer plusieurs paramètres, on peut utiliser seulement paramName. Le bean référencé doit contenir une Map contenant les couples clés/valeurs pour chaque paramètre. Une limitation existe cependant, les noms des clés sont les noms des paramètres transmis.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut
    Je me suis mal fait comprendre, j'ai besoin de définir un paramètre de requête depuis ma Servlet.

    De plus, j'ai déjà eu connaissance de cette réponse...

  4. #4
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 366
    Points
    1 366
    Par défaut
    ok dans ce cas un simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String url = request.getRequestUrl() + "&monparam=mavaleur";
    resquestDispatcher.forward(url);
    Ca devrait le faire.


    @+

  5. #5
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut
    Merci, je ne connaissais pas du tout.
    Mais je n'arrive pas à forwarder à partir de l'URI que j'obtiens...
    Où est-ce que je peux accéder au requestDispatcher ?

  6. #6
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 366
    Points
    1 366
    Par défaut
    depuis l'obet request (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html#getRequestDispatcher(java.lang.String))

    ou sinon tu peux aussi utiliser le sendRedirect depuis l'objet response.

    @+

  7. #7
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut
    De mieux en mieux !
    J'ai essayé avec response.sendRedirect(url) mais j'ai une erreur 404.
    Par contre, j'aimerais essayer avec request.getDispatcher(...) mais je ne sais pas quel String il attend...
    De +, sa méthode forward prend deux arguments (request et response).
    Alors dans le doute j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getRequestDispatcher(url).forward(request, response);
    Mais j'ai là aussi une erreur 404.

  8. #8
    Membre habitué
    Avatar de dtateur
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 140
    Points
    140
    Par défaut
    Tu dois passer une url relative en parametre du RequestDispatcher.


    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getRequestDispatcher("../html/copyright.html");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getRequestDispatcher("copyright.html");

  9. #9
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut
    OK merci...
    donc sachant que j'essaie d'accéder à la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://srvjboss:8080/ucpweb/gestion-dossier.do?methode=consulter
    Théoriquement, si l'URL que je génère donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /ucpweb/gestion-dossier.do?methode=consulter
    En faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getRequestDispatcher(url);
    Ca devrait marcher ?... j'ai une erreur 404 en faisant ce que je viens d'énoncer.

  10. #10
    Membre habitué
    Avatar de dtateur
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 140
    Points
    140
    Par défaut
    essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getRequestDispatcher("gestion-dossier.do");

  11. #11
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut
    Oui bien sûr, ca marche, mais l'URL que me retourne le requestDispatcher avec getRequestURI() me retourne une URL à partir de /ucpweb et de plus, j'aimerais ajouter des paramètres de requête dans l'URL.

  12. #12
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 366
    Points
    1 366
    Par défaut
    Dans ce cas il faut pas l'url mais l'uri il me semble.

    Regarde ds la doc de HttpServletRequest.

    @+

  13. #13
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut
    Oui je parle bien d'URI qui m'est retournée par getRequestURI()

  14. #14
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 366
    Points
    1 366
    Par défaut
    Attention URL et URI ne retourne pas la meme chose:

    getRequestURI
    public java.lang.String getRequestURI()Returns the part of this request's URL from the protocol name up to the query string in the first line of the HTTP request. The web container does not decode this String. For example: First line of HTTP request Returned Value
    POST /some/path.html HTTP/1.1 /some/path.html
    GET http://foo.bar/a.html HTTP/1.0 /a.html
    HEAD /xyz?a=b HTTP/1.1 /xyz

    To reconstruct an URL with a scheme and host, use HttpUtils.getRequestURL(javax.servlet.http.HttpServletRequest).

    Returns:
    a String containing the part of the URL from the protocol name up to the query string
    See Also:
    HttpUtils.getRequestURL(javax.servlet.http.HttpServletRequest)

    --------------------------------------------------------------------------------

    getRequestURL
    public java.lang.StringBuffer getRequestURL()Reconstructs the URL the client used to make the request. The returned URL contains a protocol, server name, port number, and server path, but it does not include query string parameters.
    Because this method returns a StringBuffer, not a string, you can modify the URL easily, for example, to append query parameters.

    This method is useful for creating redirect messages and for reporting errors.

    Returns:
    a StringBuffer object containing the reconstructed URL

  15. #15
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut

    Ah ouais d'accord, j'avais pas compris la nuance avec getRequestURL(). Effectivement je me demandais pourquoi un StringBuffer à la place d'un String... pour manipuler la chaine de sortie !

    OK Merci beaucoup, je vais m'en sortir je pense maintenant.
    A+

    PS : d'où sort cette doc, je n'ai pas trouvé autant de doc en cherchant sur le site officiel dans les API java.

  16. #16
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 366
    Points
    1 366
    Par défaut
    C'est la javadoc :p

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par RanDomX
    • Comment enrichir un lien HTML de parametres avec Struts ?

    Si la (ou les valeurs) à passer se trouve dans un bean connu, on peut utiliser les attributs paramId et paramName.
    paramId correspond au nom du paramètre à passer, et paramName au nom du bean qui contient la valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link href="action.do?” paramId=”prop” paramName=”myBean”/>
    Sais-tu comment on peut faire quand on a deux valeurs à faire passer ?

    Merci

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

Discussions similaires

  1. [STRUTS][HIBERNATE] problème tres bizzare
    Par abdess6600 dans le forum Struts 1
    Réponses: 19
    Dernier message: 02/06/2006, 19h42
  2. [Struts]Recupération de la valeur d un param....
    Par Oby dans le forum Struts 1
    Réponses: 2
    Dernier message: 11/02/2005, 12h56
  3. [STRUTS] comment passer plusieur param GET aves <html:lin
    Par lfournial dans le forum Struts 1
    Réponses: 3
    Dernier message: 20/01/2004, 09h57
  4. Comment être sure que mon appli prenne le focus ?
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/12/2002, 16h00
  5. Réponses: 2
    Dernier message: 21/03/2002, 00h01

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