I finally managed to set the headers this way : WebResponse response = (WebResponse) getRequestCycle().getResponse(); response.setDateHeader("Date", System.currentTimeMillis()); response.setDateHeader("Expires", System.currentTimeMillis() + CACHE_DURATION); response.setHeader("Cache-Control", "max-age=" + CACHE_DURATION + ", must-revalidate"); response.setLastModifiedTime(Time.valueOf(new Date(90, 1, 1).getTime())); response.setContentType("text/csv");
I see them all in live http headers but... the browser keeps requesting the file I send back : http://localhost:8080/charts/data/dataId/AOX GET /charts/data/dataId/AOX HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en,de;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: JSESSIONID=vk0x2bf8xnpb HTTP/1.x 200 OK Last-Modified: Wed, 31 Jan 1990 23:00:00 GMT Expires: Tue, 04 Aug 2009 09:53:23 GMT Cache-Control: max-age=3600000, must-revalidate Content-Type: text/csv; charset=UTF-8 Content-Length: 5659 Date: Tue, 04 Aug 2009 08:53:23 GMT Server: Jetty(6.1.16) if anyone knows how to resolve that ++ On Wed, Jul 29, 2009 at 12:10 AM, ZedroS Schwart<zedros.schwa...@gmail.com> wrote: > hi Juri > > I did it the same way as you did and it worked fine. Even more : I > didn't even see lines in http header (???). > > However, it doesn't fit my use case : I need to get the link to the > file to embed it in a javascript. Previously I did it this way : > PageParameters parameters = new PageParameters(); > parameters.add(AMChartDataProviderPage.DATA_KEY, set.getDataId()); > return RequestCycle.get().urlFor(AMChartDataProviderPage.class, > parameters).toString(); > > however I don't know how to do it with what you provided... > > ++ > > On Tue, Jul 28, 2009 at 10:32 AM, Juri Prokofiev<proj...@gmail.com> wrote: >> It works for me. >> >> ResourceLink csvLink = new ResourceLink("csvLink", new >> ResourceReference(AnnouncementCsvResource.ID), params); >> add(csvLink); >> >> public class AnnouncementCsvResource extends WebResource >> { >> public static final String ID = "csv"; >> �...@override >> public IResourceStream getResourceStream() >> { >> return new CsvResourceStream(); >> } >> >> �...@override >> protected void setHeaders(WebResponse response) >> { >> super.setHeaders(response); >> response.setAttachmentHeader("announcements.csv"); >> response.setHeader("Cache-Control", "no-cache"); >> } >> >> private class CsvResourceStream extends AbstractStringResourceStream >> { >> �...@override >> public String getContentType() >> { >> return "text/plain"; >> } >> >> �...@override >> protected Charset getCharset() >> { >> return Charset.forName("ISO-8859-1"); >> } >> >> �...@override >> protected String getString() >> { >> return "bla bla "; >> } >> } >> } >> >> >> On Tue, Jul 28, 2009 at 10:44 AM, ZedroS Schwart >> <zedros.schwa...@gmail.com>wrote: >> >>> Thanks for this answer Juri. >>> >>> I tried it (once again) and it didn't work : the setHeaders method >>> isn't called... >>> >>> I use Live HTTP headers to check what goes through : >>> http://localhost:8080/charts/data/dataId/KBU >>> >>> >>> >>> GET /charts/data/dataId/KBU HTTP/1.1 >>> >>> Host: localhost:8080 >>> >>> User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) >>> Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 >>> >>> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 >>> >>> Accept-Language: en,de;q=0.5 >>> >>> Accept-Encoding: gzip,deflate >>> >>> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 >>> >>> Keep-Alive: 300 >>> >>> Connection: keep-alive >>> >>> Cookie: JSESSIONID=1gxaom5muzh66 >>> >>> >>> >>> HTTP/1.x 200 OK >>> >>> Content-Type: text/csv; charset=UTF-8 >>> >>> Content-Length: 5726 >>> >>> Server: Jetty(6.1.16) >>> >>> >>> thanks again >>> zedros >>> >>> On Tue, Jul 28, 2009 at 8:59 AM, Juri Prokofiev<proj...@gmail.com> wrote: >>> > To set headers to a resource you need to extend setHeaders method from >>> > WebResource. Example: >>> > �...@override >>> > protected void setHeaders(WebResponse response) >>> > { >>> > super.setHeaders(response); >>> > response.setAttachmentHeader("announcements.csv"); >>> > response.setHeader("Cache-Control", "no-cache"); >>> > } >>> > >>> > Check your headers. If Cache-Control is passed then resource should be >>> > cached on user side. >>> > >>> > On Tue, Jul 28, 2009 at 1:02 AM, ZedroS Schwart >>> > <zedros.schwa...@gmail.com>wrote: >>> > >>> >> hi >>> >> >>> >> We need to provide a flash application (www.amcharts.com if anyone is >>> >> interested) with some content through some files. >>> >> >>> >> As the files are users specific (and determined with data from the >>> >> session), we went for some page delivering the content like this : >>> >> public AMChartDataProviderPage(final PageParameters parameters) >>> >> { >>> >> Object object = parameters.get(DATA_KEY); >>> >> if ((object == null) || !(object instanceof String) || >>> >> "".equals(object)) >>> >> { >>> >> throw new IllegalStateException("Expected parameter " + >>> >> DATA_KEY + " not provided or empty"); >>> >> } >>> >> String dataId = (String) object; >>> >> ByteArrayResource resourceStream; >>> >> try >>> >> { >>> >> resourceStream = new ByteArrayResource("text/csv", >>> >> IOHelper.getResourceAsByteArray(dataId + ".csv")); >>> >> } >>> >> catch (IOException e) >>> >> { >>> >> throw ExceptionHelper.wrap(e); >>> >> } >>> >> getRequestCycle().setRequestTarget(new >>> >> ResourceStreamRequestTarget(resourceStream.getResourceStream())); >>> >> } >>> >> >>> >> However, I don't manage to get this resource to be cached on the user >>> >> browser side, despite the resource being cacheable. From what I've >>> >> seen, setHeaders() in WebResource is never called... Neither did I >>> >> manage to set them myself (on the page they're never called neither... >>> >> and the request cycle has no webresponse on which to define the >>> >> header). >>> >> >>> >> Any clue ? >>> >> >>> >> thanks in advance >>> >> zedros >>> >> >>> >> --------------------------------------------------------------------- >>> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> >> For additional commands, e-mail: users-h...@wicket.apache.org >>> >> >>> >> >>> > >>> > >>> > -- >>> > http://www.autoladu.ee - kõik varuosad ühes kohas >>> > >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >> >> >> -- >> http://www.autoladu.ee - kõik varuosad ühes kohas >> > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org