Jitesh, I have recently done the same thing, that is, used a filter with the Struts ActionServlet and all was fine. To help I would need to see your ResponseWrapper, web.xml and your filter.
Just quickly though, when you say you get a blank page, have you checked the source HTML. Regards, Rob. >From: "Jitesh Vidhani" <[EMAIL PROTECTED]> >Reply-To: [EMAIL PROTECTED] >To: <[EMAIL PROTECTED]> >Subject: [MVC-Programmers] FW: Problem writing a Filter with Struts >Date: Mon, 8 Jul 2002 13:45:16 -0700 > >Hi all, > >I had posted this problem on the Struts Mailing list but never got any >response. So I thought I might forward it on to this list. Please let me >know if the problem sounds familiar. > >Thanks, >Jitesh > >-----Original Message----- >From: Jitesh Vidhani [mailto:[EMAIL PROTECTED]] >Sent: Friday, May 31, 2002 11:49 AM >To: [EMAIL PROTECTED] >Subject: Problem writing a Filter with Struts > > >Hi all, > >I am trying to write a Filter around my struts layer. > >Basically what I want to achieve is that when the User tries to go to a >particular URL, I make him go through the Filter. The filter calls >chain.doFilter() and I then I check to see if the ActionBean has set up a >particular attribute in the request. If it has been set then the Filter >modifies the response and outputs a different HTML onto the client. > >Heres the code snippet from my Filter: > > ServletOutputStream out = response.getOutputStream(); > ResponseWrapper wrapper = new >ResponseWrapper((HttpServletResponse)response); > chain.doFilter(request, wrapper); > > if(request.getAttribute("Modify")!=null) > { > CharArrayWriter caw = new CharArrayWriter(); > caw.write("<html><body>THIS IS THE MODIFIED >PAGE</body></html>"); > response.setContentLength(caw.toString().length()); > out.print(caw.toString()); > } > else > { > byte[] bytes = wrapper.toByteArray(); > System.out.println("About to add: " + >String.valueOf(bytes.length) + " >bytes to the stream: " + new String(bytes)); > out.write(bytes); > response.setContentLength(bytes.length); > } > response.setContentType("text/html"); > out.flush(); > out.close(); > >I have a wrapper wherein I extend the HttpServletResponseWrapper and use a >ByteArrayOutoutStream and I have overridden the getWriter() and the >getOutputStream() methods of the HttpServletResponseWrapper. > >Now when I try to use this URL in the client browser then I somehow see a >Blank page irrespective of whether the request attribute has been set or >not. I also tried to print the Bytes from the wrapper that I am writing out >to the response's ServletOutputStream and it seems to be right. > >I have written a small test servlet and the Filter works just fine with >that >Servlet. So there is something perculiar about the Struts ActionServlet >that >doesnt allow me to do this. > >I am not able to figure out where I am going wrong. Any help would be >appreciated. > >Thanks, >Jitesh > >_______________________________________________ >MVC-Programmers mailing list >[EMAIL PROTECTED] >http://www.basebeans.com:8081/mailman/listinfo/mvc-programmers _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com _______________________________________________ MVC-Programmers mailing list [EMAIL PROTECTED] http://www.basebeans.com:8081/mailman/listinfo/mvc-programmers