Bonjour à tous,

Cela fait maintenant plusieurs jours que je me casse la tête, sans grand résultat...

Je développe actuellement une appli JEE / Struts 2.

A l'inscription, j'ai une action qui se charge d'envoyer un mail à l'utilisateur, et une JSP qui affiche le résultat (mail correctement envoyé ou erreur).

Plutot que de générer le contenu du mail dynamiquement dans l'action (comme ce qui est fait actuellement), je souhaiterais générer le contenu du mail en passant par une JSP (puisque celles-ci sont justement conçues pour la génération de code).

En gros ce que je voudrais donc faire :
1 - L'utilisateur appel l'action
2 - Je crée une response fictive qui appel la JSP pour générer le mail (réponse qui ne sera donc jamais envoyée au client, mais juste utilisée pour récupérer le code généré par la JSP)
3 - J'envois le mail avec le code généré au destinataire
4 - L'action forward sur la JSP normalement

Quelqu'un aurait-il une idée de la manière dont il faut procéder ?

J'ai essayé ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
RequestDispatcher rd =  request.getSession().getServletContext().getRequestDispatcher("/jsp/generateMailContent.jsp");
 
HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper(request);
 
rd.include(wrapper, response);
 
String mailContent = response.toString();
 
/* Envoit du mail ici OK */
 
response.reset();
 
return SUCCESS;

Je récupére bien le résultat dans mailContent, mais un message d'erreur apparaît lors du forward de l'action :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
java.io.IOException: Stream closed
	org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)
	org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
	org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:173)
	org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:956)
Merci d'avances.