Je travaille au sein d’un projet JAVA J2EE Struts et j’ai quelques problèmes pour la mise en place d’un filtre de servlet.

Mon problème est le suivant :

Je désire faire appel à un filtre qui permettrait d’appeler deux pages jsp différentes.

A la fin du filtre je dois rediriger l’application vers la premiere jsp. Le contenu de la seconde doit être stocké en base.

Pour cela je déclare deux objets ReponseWrapper (étendent HttpServletResponseWrapper).

Malheureusement le deuxième objet ReponseWrapper (vResponseWrapper) sensé contenir le code html de la deuxième jsp contient le code de la première (vResponseWrapperInit).

La redirection finale se passe bien.

Voyez-vous une explication à ce problème?

Merci d’avance pour vos réponses.

Voici mon code :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException
 {
            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) resp;
 
            ResponseWrapper vResponseWrapperInit = new ResponseWrapper(response);
            ResponseWrapper vResponseWrapper = new ResponseWrapper(response);
 
            String generationDoc = request.getParameter(K_GENERATION_DOC);
            String processusGenerationDoc = (String) request.getSession().getAttribute("ProcessusGenerationInit");
 
            // Cas ou l'on ne genere pas de document.
            if ((null == generationDoc || "".equals(generationDoc)) && (null == processusGenerationDoc || "".equals(processusGenerationDoc)) )
            {
                  chain.doFilter(request,response);
            }
            else
            {
                  request.getSession().removeAttribute("ProcessusGenerationInit");
 
                  // Stocker la reponse dans vResponseWrapperInit
                  response.setContentType("text/html;charset=UTF8");
                  chain.doFilter(request,vResponseWrapperInit);
 
                  //    appel de l'action d'edition de document
                  mConfig.getServletContext().getRequestDispatcher("/DemandeModifHCGEditerAccuseReception.do").forward(request, vResponseWrapper);
 
                  System.out.println("****************************************************");
                  System.out.println(vResponseWrapperInit.getResponseContent());
                  System.out.println("****************************************************");
                  System.out.println(vResponseWrapper.getResponseContent());
                  System.out.println("****************************************************");
 
                  //    Recupérer le html + stocker en base
                  WebApplicationContext vWac = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
 
                  DemandeVO vDemande = (DemandeVO) request.getSession().getAttribute("Demande");
 
                  SauvegardeDocument.enregistreDocumentHtml(vWac,vResponseWrapper.getResponseContent(),vDemande.getId().toString(),(byte) 1);
 
                  resp.getWriter().print(vResponseWrapperInit.getResponseContent());
            }
      }