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

Servlets/JSP Java Discussion :

Rediriger depuis une classe héritant de TagSupport


Sujet :

Servlets/JSP Java

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut Rediriger depuis une classe héritant de TagSupport
    Bonjour,

    J'ai une classe héritant de TagSupport dans lequel je fais des vérifications et des traitements.
    Suivant les cas, je souhaiterai rediriger vers une autre page jsp que celle incluant le tag.

    J'ai déjà essayé pageContext.forward mais cela n'a pas été concluant...

    Une idée pour me sortir de ce pétrin?

  2. #2
    Membre chevronné Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Par défaut
    Je ne sais pas si c'est possible de faire ce forward, mais conceptuellement, ce n'est pas vraiment conseillé...
    Un taglib doit pouvoir être utilisé dans n'importe quelle jsp. Et si tu fais une redirection vers une autre jsp à l'intérieur même du code de ton tag, ce que tu développes n'est utilisable qu'une seule fois... et tu perds tout l'intérêt du taglib...

    Je ne connais pas trop bien ta problématique, mais tu pourrais par exemple écrire un tag conditionnel.
    Et utiliser ce tag dans une jsp de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <p:isPresent name="infoConnection">
        <jsp:forward page="one.jsp"/>
    </p:isPresent>
    Dans cet exemple, s'il existe un attribut avec le nom "infoConnection", on redirige vers une autre page jsp. Sinon on ne fait rien.

    à toi d'adapter à tes besoins

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut
    Salut supermanu,

    En faites mon tag sert à valider les données entrées dans un formulaire, il est placé dans le fichier JSP correspondant à l'action de ce formulaire et fait la vérification des données.

    Jusqu'à présent la plupart des contrôles de notre formulaire se faisait en javascript, mais là j'ai besoin de faire un contrôle qui implique d'effectuer une requête dans un annuaire LDAP. Suivant le résultat, on continue le traitement habituel ou on renvoit sur le formulaire avec un message d'erreur.

    Je voulais aussi essayer la solution du sendRedirect mais l'objet pageContext.getReponse() est de type servletResponse et non HttpServletResponse...

    Comment puis-je rediriger sans soucis?

  4. #4
    Membre chevronné Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Par défaut
    Ce que tu veux faire est très classique, mais ça ne se fait pas avec une taglib

    Si j'ai bien compris : après avoir cliqué sur le bouton "valider" de ton formulaire tu veux contrôler les champs de ton formulaire (en faisant appel à un annuaire LDAP). Si les champs sont correctes tu rediriges vers une autre page, sinon tu reviens sur la même page en affichant un message d'erreur.
    En gros tu veux effectuer des contrôles au niveau du serveur en java (c'est exactement ce qu'il faut faire) et plus au niveau du client avec javascript (pas très sécurisé).

    Pour celà je te conseille fortement de regarder ce tutoriel : http://tahe.ftp-developpez.com/fichi...seettomcat.pdf

    Tu peux peut-être passer la première partie (installation de Tomcat, Eclipse...), et regarder le chapitre "I.8 Une page JSP"

    Tu vas d'abord créer une page jsp pour mettre ton formulaire : formulaire.jsp. On appelle ça la vue.
    Tu vas ensuite créer une classe qui étend HttpServlet : une servlet qui va te servir de contrôleur. Et c'est dans cette classe que tu vas faire tes contrôles de champs et rediriger vers telle ou telle page sans aucun soucis.

    Si tu as des soucis, hésite pas et post ton code

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut
    Ben je me suis bien rendu compte en développant sur cette application qu'elle ne respectait pas vraiment certaines normes en developpement web Java (notamment le modèle MVC) mais le soucis que j'ai aussi c'est que mon délai est court, je dois régler ce problème pour demain soir au plus tard et j'ai aussi d'autres tâches à faire... Sinon si j'avais eu le temps j'aurais revu complètement l'architecture de cette appli pour sûr

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    J'ai du mal (pour ma part) à comprendre le problème, je n'en vois aucun

    Ton formulaire a bien un paramètre action="..." avec un lien vers une servlet.
    Pourquoi ne pas utiliser cette servlet pour faire le test.
    Pour la redirection, ça devient trivial...

    J'ai raté quelque chose ?

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

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut
    En faites l'application sur laquelle je bosse a été bizarrement structurée...

    Les actions de mes formulaires ramènent sur des pages JSP qui affichent le résultat, et le traitement entre ces pages se fait par le biais de tag définis et appelés dans les pages définies dans les actions de mes formulaires...

    Voila pour l'explication, je ne sais pas si j'ai été clair

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je pense que c'est clair...
    Tes attributs "action" de la balise <form> sont des liens vers des pages jsp qui utilisent des taglib pour faire un traitement (avec les paramètres d'entrée je suppose)
    Tu n'es pas responsable de cette façon de faire, mais le moins qu'on puisse dire, c'est que ça doit être un gros bord.. à maintenir, et pour ce qui est du model MVC, on oublie

    Pour faire ce que tu veux, il faudrait que le taglib qui fait les tests puisse enregistrer dans le contexte page (par exemple) une propriété qui dise ok ou pas ok.
    Ensuite, dans la page, tu n'as qu'à faire un test sur cette variable et balancer l'execution du javascript suivant (un truc dans le genre du moins)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <% if ( controlPasOK ) { %>
    <script>
    window.location.replace("/url/de/la/page.jsp");
    </script>
    <%  } %>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut
    Ok donc apparemment il n'y a pas d'autres solutions possible...

    Dommage, ca va encore crader le code de cette application, qui l'était déjà pas mal lol...

    Merci pour le coup de main

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ce n'est pas la seule façon de faire, s'en est une...

    Tu pourrais également faire un taglib "CheckFormTag" (étendant BodyTag) qui s'occupe du contrôle, avec par exemple un attribut "validated" (true|false) pour savoir ce qu'on évalue (on peut prévoir d'autres attributs, c'est juste un exemple).

    Du coup, on pourrait écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <leTag:checkForm validated="true">
       ... ici on fait si le contrôle est ok
    </leTag:checkForm>
     
    <leTag:checkForm validated="false">
       ... ici on fait si le contrôle n'est pas ok, on redirige vers une autre page
    </leTag:checkForm>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut
    Finalement je suis passé par de l'Ajax en mettant le controle sur le champ que j'avais besoin de vérifier et ma foi ca marche pas mal

    Merci à vous 2 pour le coup de main en tout cas, je garde précieusement le pdf donné sur le developpement web en Java, ca me servira surement plus tard

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/03/2006, 17h45
  2. Réponses: 4
    Dernier message: 08/03/2006, 19h07
  3. acces a uneressource bitmap depuis une classe
    Par firejocker dans le forum MFC
    Réponses: 9
    Dernier message: 03/02/2006, 21h48
  4. Réponses: 14
    Dernier message: 15/12/2005, 18h46
  5. Référence à un objet existant depuis une classe
    Par Adrenalys dans le forum ASP
    Réponses: 2
    Dernier message: 21/07/2005, 00h44

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