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 :

Jsp et gabarit de mail


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Jsp et gabarit de mail
    Bonjour,

    Voici mon problème :

    Sur une appli web j2ee/struts, j'ai une jsp contenant une série de cas avec un tableau dynamique différant pour chaque cas(une boucle qui déroule une map et qui affiche chaque ligne).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(condition 1){
       calcul tableau 1 (5 colonnes, 2 lignes)
     
    }else if (condition 2){
       calcul tableau 2 (7 colonnes, 10 lignes)
    }

    Jusqu'ici tout va bien... Par contre je voudrai envoyer ce tableau par mail suite à la validation de l'écran pré-cité...

    Afin de ne pas recoder les if et les boucles sur map, J'ai pensé à plusieurs solutions malheureusement insatisfaisantes :

    • Dans la jsp, construire un String en même temps que le tableau, passer ce String au mail.
      ->Problème : hétérogéneité du code, le tableau sera construit avec Struts, la chaine avec du code java

    • Récupérer le code html généré par la jsp, isoler le tableau dans un String, l'insérer dans le mail.
      Dans ce cas je ne peut pas utiliser l'objet URL que je collerai sur un BufferedReader. Je veux éviter de faire jouer une action.


    Pou la premiere solution, je sais faire, mais ca me plait pas vraiment, pour la seconde, je ne sais même pas si c'est possible...

    Si quelqu'un a une idée, je suis preneur!

  2. #2
    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
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Et bien, tu pourrais essayer de te faire un tag étendant BodyTagSupport.
    Dans la méthode doAfterBody, tu peux récupérer le contenu sous forme de String par getBodyContent().getString().
    Tu n'as qu'à mettre la génération de ton tableau à l'intérieur de ton tag et ça devrait fonctionner.

    A toi de tester ...

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Modif de tag lib
    Je vais faire le test, ca m'a lair plutot bien!
    Par contre, comment récupere-t-on la chaine de caractère? On peut appeler le doAfterBody d'une action Struts?

  4. #4
    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
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Non, mais rien ne t'empêche de mettre le contenu en session...

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Pour que je comprenne bien :

    Je créé la balise et je l'utilise dans la jsp pour entourer le code que je veux récuperer.
    Je créé ma classe qui hérite de BodyTagSupport et lorsque que la jsp est traitée, la méthode doAfterBody est appelée.
    Dans cette méthode je récupere le contenu que j'envoi en session...

    J'ai bon?

    Par contre, je vois pas comment on fait le lien entre la balise et la classe Java?

  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
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    T'as bon...

    Mais de quelle classe parles-tu ? Celle du tag ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Je parlais de la classe du tag, par exemple MailTagSupport qui hérite de BodyTagSupport.
    Dans la jsp je met mes tags <mail> et je modifie le .tld pour faire le lien entre la balise mail et la classe MailTagSupport.

    Je crois que j'ai compris!
    C'est parti...

  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
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    OK, je suis curieux de savoir si ça fonctionne, on ne sait jamais, je pourrais en avoir besoin un jour

  9. #9
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut solution!!
    Ca marche bien :

    Classe tag :
    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
    package moteur.outils;
     
    import java.io.IOException;
     
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.PageContext;
    import javax.servlet.jsp.tagext.BodyTagSupport;
     
    public class MailTagSupport extends BodyTagSupport {
    	public MailTagSupport(){
    		super();
    	}
    	public int doAfterBody() throws JspException {
    		try {
    			if (this.getBodyContent()!= null) {
    				String body_string = getBodyContent().getString();
    				System.out.println("fusion : "+body_string);
    				getBodyContent().getEnclosingWriter().println(body_string);
    			}
    		} catch(IOException e) {
    			throw new JspException(e);
    		}
    		return EVAL_PAGE;
    		}
    	public int doStartTag() throws JspException {
    		return EVAL_BODY_BUFFERED;
    	}
    }
    Le fichier balise.tld :

    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
    <?xml version="1.0" ?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
    <taglib>
    	<tlib-version>1.0</tlib-version>
        <jsp-version>1.2</jsp-version>
        <short-name>mt2</short-name>
        <uri></uri>
        <description>My Second Tag library</description>
        <tag>
            <name>mail</name>
            <tag-class>moteur.outils.MailTagSupport</tag-class>
            <body-content>JSP</body-content>
            <description>A simple Error handling Tag</description>
     
        </tag>
    </taglib>
    Et la JSP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%@ taglib prefix="t" uri="/WEB-INF/balise.tld" %>
    <pre>
     
    <%String valeur="toto"; %>
    <t:mail>
    <%=valeur %>
     
    actualité
    </t:mail>
    test
    </pre>


    On arrive a récupérer le code généré et à le mettre dans une variable!
    Le reste n'est que formalité...

    Merci pour l'idée OButterlin!!
    +1

    Références :
    http://mbaron.ftp-developpez.com/javaee/taglib.pdf
    http://www.orionserver.com/docs/tuto...aglibs/11.html
    http://java.sun.com/j2ee/1.4/docs/tu...Advanced8.html

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

Discussions similaires

  1. jsp-servlet==>envoi de mail
    Par Nivrae dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 30/04/2008, 16h24
  2. Envoie de mail dans une page jsp
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2006, 12h34
  3. [JSP] jsp mail
    Par beshaj dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 29/03/2006, 22h58
  4. [débutant][JSP] envoyer un mail
    Par bargou dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/09/2005, 20h13
  5. [Debutant(e)]envoyer un mail en jsp
    Par SegmentationFault dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 19/01/2004, 19h28

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