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