or even better dont use a page at all, use a shared resource
-igor
On 1/23/07, Daniel Nüst <[EMAIL PROTECTED]> wrote:
Thank you very much, Johan!
I wrote my own XMLRequestTarget around your code and now it works.
Daniel
Johan Compagner schrieb:
> 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]
> <mailto:[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]>
> > <mailto:[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>
> >
> <
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]>
> > <mailto: [email protected]
> <mailto:[email protected]>>
> > https://lists.sourceforge.net/lists/listinfo/wicket-user
> <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
> <
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