* Jan Van Besien:
> Jean-Baptiste Quenot wrote:
> > The concepts described in the static pages examples are the same
> > in 1.2.6. You would just have to copy
> > URIRequestTargetUrlCodingStrategy in your project, it is
> > compatible with 1.2.6.
>
> Ok, that's what I did.
>
> In the WebPage class I have something like (StaticLink as in the example)
>
> StaticLink fileLink = new StaticLink("fileLink", new Model("reports/" +
> file.getAbsolutePath()));
>
> In the WebApplication class I do
>
> mount("/reports", new URIRequestTargetUrlCodingStrategy("/reports") {
> public IRequestTarget decode(RequestParameters requestParameters) {
> String path = getURI(requestParameters);
> FileResourceStream fileStream = new FileResourceStream(new
> File(path));
> return new ResourceStreamRequestTarget(fileStream);
> }
> });
>
> Note that I use a FileResourceStream because my files are not in the
> webapp. Now when I try to browse to a certain file, I get this in a
> JBoss server
>
> 08:09:44,384 ERROR [[rtApplication]] Servlet.service() for servlet
> rtApplication threw exception
> java.lang.IllegalStateException: getOutputStream() has already been
> called for this response
> at
> org.apache.catalina.connector.Response.getWriter(Response.java:596)
> at
> org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:186)
> 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:697)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> at
> org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> 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.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
> at
> org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
> at
> org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
> 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:856)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
> at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
> at
> org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
> at java.lang.Thread.run(Thread.java:595)
>
> Strange thing: if I replace the 'new File(path)' with 'new
> File("/tmp/test.txt")' it actually works (returning test.txt for every
> link ofcourse).
If this is Wicket 1.2.6, yes I can understand this issue, and it's
fixed in 1.3. It was a bug in BufferedWebResponse, not buffering
enough.
Back to your problem: does it work on Tomcat or Jetty?
Note that for security reasons you shouldn't mention the absolute
path in the URL. I advise to prepend the root path in the code.
Also be careful of the double slash! By reading your code, the
request translates to:
reports//path/to/file
--
Jean-Baptiste Quenot
aka John Banana Qwerty
http://caraldi.com/jbq/
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user