aspose file tools*
The moose likes Servlets and the fly likes CharResponseWrapper Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Java 8 in Action this week in the Java 8 forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "CharResponseWrapper" Watch "CharResponseWrapper" New topic
Author

CharResponseWrapper

Matt Newboult
Greenhorn

Joined: Feb 08, 2007
Posts: 2
Hi

I've read all of the forums but I'm stuck trying to use Filters to intercept a struts .do action using OC4J. I'm trying to intercept it to turn the html into a pdf. The filter is setup and working ok, but the code breaks when trying to get the CharResponseWrapper.

public final void doFilter(
final ServletRequest request,
final ServletResponse response,
final FilterChain chain) throws IOException, ServletException {

if (request instanceof HttpServletRequest) {
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpServletResponse httpResp = (HttpServletResponse) response;


CharResponseWrapper wrapper = new CharResponseWrapper(httpResp);

System.out.println("*** wrapper: |" + wrapper.toString() + "|");
chain.doFilter(request, wrapper);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {

DocumentBuilder builder = DocumentBuilderFactory
.newInstance().newDocumentBuilder();
Document doc = builder.parse(new InputSource(
new StringReader(wrapper.toString())));

...

The wrapper.toString() is empty! The CharResponseWrapper is the same as everyone else is using so can't see there being any problems there.

The exception is...

oracle.xml.parser.v2.XMLParseException: Start of root element expected.
at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:320)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:341)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:303)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:206)
at oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:155)
at uk.co.cascaid.control.kadol.PdfFilter.doFilter(PdfFilter.java:98)

Any help, greatly appreciated.

Matt
Steve Luke
Bartender

Joined: Jan 28, 2003
Posts: 3971
    
  17

> The wrapper.toString() is empty!

Not surprising. The CharResponseWrapper will print the contents of the response in the toString() method. You put the
System.out.println("*** wrapper: |" + wrapper.toString() + "|");
line before the chain.doFilter(...) call, so you are trying to print the line before any response is written to it.

Try moving the System.out line after the chain.doFilter and see what output you get.


Steve
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: CharResponseWrapper
 
Similar Threads
html processing
Caching rendered html in jsp
Response filter - doFilter() never returns
Servlet response get output data
when to use setContentLength()