Thanks a lot Martin for detailed explanation I do have this functionality working with old version of AjaxDownload
And here is my first try to migrate to the new internal wicket AjaxDownload: https://github.com/apache/openmeetings/commit/5fa2c87f212e4eecdd1368f2ae7fa8762832838f I would appreciate if you can take a look at this tiny commit. Something really doesn't work as expected .... Commited version behaves wrong: 1) file downloaded has wrong name 2) is not valid zip file (cannot be opened) 3) for some reason I'm not able to get to breakpoint at line 115 [1] Additionally I got NotSerializable exception in case I made "download" class final variable What am I doing wrong? [1] https://github.com/apache/openmeetings/commit/5fa2c87f212e4eecdd1368f2ae7fa8762832838f#diff-0a499c88998a93ceb51c347836aa6195R115 On Thu, Mar 23, 2017 at 3:16 AM, Martin Grigorov <[email protected]> wrote: > On Wed, Mar 22, 2017 at 12:59 PM, Maxim Solodovnik <[email protected]> > wrote: > >> Actually I have 2 example use cases: >> >> 1) user selects files on file tree >> 2) as soon as file is selected and download is enabled for it, used can >> press ajax download button and get the file >> >> Another case: >> User requests system backup >> As soon as backup is created (Progress complete) >> Download of newly created file should be initiated >> >> I can't create ResourceReference and override getResourceStream of it since >> I only have resource just before download >> > > Wicket IResource is an abstraction over the real resource. > In my case i also create the response on the fly. It is either a single > File or a Zip file with several entries. > The ResourceReference is more or less just an endpoint with almost no logic > at all. It just creates the IResource. > The IResource uses the information from the request parameters / session / > somewhere else to create the actual response (the files). > > AjaxDownload is an Ajax behavior that you can use to trigger the creation > of the files and by using its callback methods you can show feedback to the > user. To show progress bar you will need to employ ProgressBar from > wicket-extentions or use WebSockets. > > >> >> On Wed, Mar 22, 2017 at 6:53 PM, Martin Grigorov <[email protected]> >> wrote: >> >> > Hi Maxim, >> > >> > I use the new AjaxDownload with a ResourceReference, i.e. >> > AjaxDownload#AjaxDownload(org.apache.wicket.request. >> > resource.ResourceReference, >> > org.apache.wicket.request.mapper.parameter.PageParameters) >> > The ResourceReference has >> > >> > public IResource getResource() { >> > return new StatementDownloadResource(); >> > } >> > >> > StatementDownloadResource extends ResourceStreamResource and provides >> > implementation of #getResourceStream(). There I have a logic that returns >> > either FileResourceStream or ZipResourceStream. >> > >> > Martin Grigorov >> > Wicket Training and Consulting >> > https://twitter.com/mtgrigorov >> > >> > On Wed, Mar 22, 2017 at 12:30 PM, Maxim Solodovnik <[email protected] >> > >> > wrote: >> > >> > > Just have tried to switch to this AjaxDownload component >> > > And it seems I cannot find proper way to use it with dynamic file, i.e. >> > > >> > > previously >> > > I created AjaxDownload, >> > > added it to the page >> > > then at the moment I know what file should be served, I set the stream >> > and >> > > initiate the download >> > > (for example one of use cases: I need to create zip file >> > > >> > > right now this seems to be impossible :( >> > > Can you give me a hint how this dynamic nature can be implemented? >> > > >> > > >> > > -- >> > > WBR >> > > Maxim aka solomax >> > > >> > >> >> >> >> -- >> WBR >> Maxim aka solomax >> -- WBR Maxim aka solomax
