2011-06-08 1 views
1

J'essaie d'inclure une page JSP après la fin d'un filtre. J'ai le code suivant:Inclusion d'un fichier JSP depuis un filtre Java EE

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
      throws ServletException, IOException { 
     try {    
      chain.doFilter(request, response); 
     } 
     finally {         
       HttpServletRequest httpRequest = (HttpServletRequest) request; 
       RequestDispatcher dispatcher = httpRequest.getRequestDispatcher("/WEB-INF/logging/logAppender.jsp"); 
       dispatcher.include(request, response); // This does not work! 
       dispatcher.include(request, response); // The second time it works?     
     } 
    } 

Pretty simple Filtrer Je pense. Cependant, comme vous pouvez le voir ci-dessus, pour une raison quelconque, l'appel inclus la première fois ne fait rien. Je suis juste confus et fatigué de déboguer. J'ai essayé d'appeler .flushBuffer(), getWriter(). Flush(), toutes sortes de close() et ne comprennent toujours pas. Toutes les idées seraient utiles?

Répondre

1

Il y a trop d'inconnues et beaucoup de choses qui ne peuvent être trouvées que par débogage pour que je puisse donner n'importe quelle réponse. Une bonne ressource qui peut vous aider est le livre Moreservlets de Marty Hall. Vous pouvez le lire gratuitement au http://pdf.moreservlets.com/. Lisez le chapitre 9 sur les filtres.

+0

je vais essayer de créer une application java mort simple pour voir si la même chose que ci-dessus arrive. Si ce n'est pas le cas, il doit y avoir quelque chose de spécial à propos de cette application. Sinon, il doit y avoir autre chose. Je pensais peut-être à la fin de la chaîne, la réponse a déjà été engagée, donc ça ne marche pas. –

-2

Il est probablement parce que vous passez la demande enveloppées et la réponse au répartiteur de demande, essayez passer le par un casting à HttpServletResponse et HttpServletRequest

dispatcher.include((HttpServletRequest) request, (HttpServletResponse)response) 
+0

Ce n'est pas vrai. Le casting ne change pas/copie l'instance concrète ou quelque chose. Java est OO. – BalusC