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

Reply via email to