il faut que tu récupères un requestdispatcher qui va te servir de wrapper pour ta ressource (tonfichier jsp en l'occurence).
Pour le récupérer il faut que tu passes par ServletContext de cette manière :
MonServletContext.getRequestDispatcher(MaJSP).
Personnellement j'utilise Spring donc j'étend WebApplicationObjectSupport et je fais juste un
RequestDispatcher rd = getWebApplicationContext().getServletContext().getRequestDispatcher(jsp);
Ensuite il faut que tu fasses un
rd.forward(request,response)
mais tu vas devoir au préalable préparer request et response.
Pour request c'est simple tu fais tes setattributes... pour passer tout ce dont tu as besoin dans ta jsp.
Pour response, c'est un peu plus complexe, tu vas devoir créer ta propre classe qui va overrider certaines méthodes de ServletResponse, voici une classe qui devrait te suffir :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
public class FictiveHttpServletResponse extends HttpServletResponseWrapper {
private StringWriter replacementWriter;
public FictiveHttpServletResponse(HttpServletResponse response) {
super(response);
replacementWriter = new StringWriter();
}
public PrintWriter getWriter() throws IOException {
return new PrintWriter(replacementWriter);
}
public String toString() {
return replacementWriter.toString();
}
} |
En gros voila ce que tu dois faire
1 2 3 4 5 6 7 8 9 10 11
| RequestDispatcher rd = getWebApplicationContext().getServletContext().getRequestDispatcher(jsp);
request.setAttribute("monatt1",Att1);
request.setAttribute("monatt2",Att2);
...
HttpServletResponse newResponse = new FictiveHttpServletResponse((HttpServletResponse) response);
rd.forward(request,newResponse);
String monMessage = newResponse.toString(); |
et voila monMessage contient le HTML généré par l'execution de ta jsp
J'espere tu t'en sortiras avec ca
Rq : request et response sont ceux passés en param sur ton doGet, doPost de ta servlet ou execute pour une action Struts par exemple
Partager