you can't just write to something in the constructor (thats in the
event/request phase)

make a RequestTarget that outputs that what you want and set that request
target as the response request target
on the request cycle

RequestCycle.get().setRequestTarget(new IRequestTarget()
{
  void respond(RequestCycle requestCycle)
  {
       Response rep = requestCycle.getResponse();
       rep.write(yourxml);
  }
});

johan

On 1/23/07, Daniel Nüst <[EMAIL PROTECTED]> wrote:

Hi Igor!

Igor Vaynberg schrieb:
> looks like you are trying to output your xml too late in the game
> (wicket has already written something to the request).
I would rather guess it seems the other way around (and I will try to
explain the situation a bit better):

* If I use res.write( xmlout.outputString( doc ) );, I do not get the
exeption, but the response is not a xml file, but a "xml+html" document:

<?xml version="1.0" encoding="UTF-8"?>
<newsList xlmns="http:// ... </newsList>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>


* If I use xmlout.output(doc, res.getOutputStream() );, I have an
exception (whole trace):

java.lang.IllegalStateException: getOutputStream() has already been
called for this response
        at org.apache.catalina.connector.Response.getWriter(Response.java
:599)
        at
org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java
:195)
        at wicket.protocol.http.WebResponse.write(WebResponse.java:315)
        at
wicket.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java
:75)
        at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java
:229)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:252)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:213)
        at
org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:178)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:126)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:105)
        at
org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:107)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
:148)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at

org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
(Http11BaseProtocol.java:664)
        at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
PoolTcpEndpoint.java:527)
        at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:684)
        at java.lang.Thread.run(Unknown Source)

To me it looks as if I wrote my xml file and wicket wants to write the
html code just behind it (just as it does when i use Response.write() ),
but it cannot because I already called getOutputStream().

I create the xml file on runtime and do not have a empty one in the same
directory as suggested in the rss examples, but I see not reason that is
the problem.

> what triggers that code?
The constructor:

public RequestXML() {
        WebRequest req = (WebRequest) getRequest();
        WebResponse res = (WebResponse) getResponse();

        parametersToResponse(req.getParameterMap(), res);
        } catch (IOException e) {
                e.printStackTrace();
        }
}

I want to use that page to request data out of a Firefox extension.
I appreciate every idea.

Regards
Daniel


>
> -igor
>
>
> On 1/22/07, *Daniel Nüst* <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>> wrote:
>
>     Hi!
>
>     I want to load an XML-file from a wicket page concerning the html
page
>     parameters with javascript. The javascript part (load and parse xml)
>     works fine and also the generated xml file is okay.
>
>     I just always get an
>
>     java.lang.IllegalStateException: getOutputStream() has already been
>     called for this response
>             at
>     org.apache.catalina.connector.Response.getWriter(Response.java:599)
>             at
>     org.apache.catalina.connector.ResponseFacade.getWriter
>     (ResponseFacade.java:195)
>             at wicket.protocol.http.WebResponse.write(WebResponse.java
:315)
>             at
>     wicket.protocol.http.BufferedWebResponse.close(
BufferedWebResponse.java:75)
>             at wicket.protocol.http.WicketServlet.doGet
>     (WicketServlet.java:229)
>     [...]
>
>
>     I did some research on this problem and found some workarounds for
jsp.
>     I also tried different combinations of Streams and Writers. Alsways
that
>     exception.
>
>     The code:
>
>     private void parametersToResponse(Map<String, String> params,
Response
>     res) throws IOException {
>                     res.setContentType("text/xml");
>
>                     logger.info("map: " + params);
>
>     //              test for illegal keys
>                     if ( containsIllegalKeys(params) || params.isEmpty()
) {
>                             logger.warn(howtoString);
>                             res.write(howtoString); //works!
>                     } else {
>
>     //                      get news from database
>                             Collection<News> news =
getNewsFromDB(params);
>
>     //                      create xml document from news
>                             Document doc = createXML(news);
>
>     //                      write xml file to stream
>                             XMLOutputter xmlout = new XMLOutputter();
>     //                      res.write ( xmlout.outputString( doc )
>     );  //does not work, res
>     writes xml to beginning of html page
>                             xmlout.output(doc, res.getOutputStream() );
>     //somehow dublicate call
>     of getOutputStream !!!
>                     }
>             }
>
>     Another solution would be, not to use XMLOutputter, just
>     response.write("..."), but I don't get a correct XML file but just
my
>     xml put before the html:
>
>     <?xml version=" 1.0" encoding="UTF-8"?>
>     <newsList [...]
>     <html>
>     <head>[...]
>
>     Anybody an idea how to solve the former or the latter?
>
>     Regards,
>     Daniel
>
>
-------------------------------------------------------------------------
>
>     Take Surveys. Earn Cash. Influence the Future of IT
>     Join SourceForge.net's Techsay panel and you'll get the chance to
>     share your
>     opinions on IT & business topics through brief surveys - and earn
cash
>
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>     <
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV>
>     _______________________________________________
>     Wicket-user mailing list
>     [email protected]
>     <mailto:[email protected]>
>     https://lists.sourceforge.net/lists/listinfo/wicket-user
>     <https://lists.sourceforge.net/lists/listinfo/wicket-user>
>
>

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share
your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to