Maxim, you can use Location.IFrame or Location.SameWindow too in -M5 (to be released!).
Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Wed, Mar 29, 2017 at 4:26 PM, Sven Meier <[email protected]> wrote: > In a minute :P > > Sven > > > > On 29.03.2017 16:15, Andrea Del Bene wrote: > >> Right when we will return to "success" :-) >> >> https://ci.apache.org/builders/wicket-master >> >> On Wed, Mar 29, 2017 at 4:07 PM, Maxim Solodovnik <[email protected]> >> wrote: >> >> Wow, Thanks a lot! >>> Could you please let me know when SNAPSHOT with the fix will be >>> available? >>> >>> On Wed, Mar 29, 2017 at 8:50 PM, Sven Meier <[email protected]> wrote: >>> >>>> Hi, >>>> >>>> so we have to change the Location.Blob to use XMLHttpRequest directly, >>>> because jQuery does not support blob downloads :/. >>>> >>>> I've change the JavaScript and now downloading of the zip works fine. >>>> >>>> FileSystemResource might not be the best candidate (because it's not >>>> serializable), but you can use an indirection to prevent it being >>>> >>> serialized >>> >>>> along with AjaxDownload: >>>> >>>> final AjaxDownload download = new AjaxDownload( >>>> new IResource() >>>> { >>>> @Override >>>> public void respond(Attributes attributes) >>>> { >>>> new >>>> FileSystemResource(zipFile.toPath()).respond(attributes); >>>> } >>>> } >>>> ); >>>> >>>> Have fun >>>> Sven >>>> >>>> >>>> >>>> On 29.03.2017 15:12, Maxim Solodovnik wrote: >>>> >>>>> Filename is minor issue .... >>>>> Main problem is invalid file :( >>>>> >>>>> How can I serve the file from file system? I thought >>>>> filesystemreference >>>>> if >>>>> the best candidate ..... >>>>> >>>>> WBR, Maxim >>>>> (from mobile, sorry for the typos) >>>>> >>>>> On Mar 29, 2017 8:08 PM, "Sven Meier" <[email protected]> wrote: >>>>> >>>>> Hi Maxim, >>>>>> >>>>>> three things: >>>>>> >>>>>> - filename ... no one sets the file name :P >>>>>> >>>>>> - serializable error ... FileSystemResource holds a reference to the >>>>>> path, >>>>>> which is not serializable >>>>>> >>>>>> - corruct zip ... my bad, it seems that Location.Blob mangles the file >>>>>> >>>>> on >>> >>>> the client side >>>>>> >>>>>> I'll see what I can do about Location.Blob - it might be an encoding >>>>>> issue. >>>>>> >>>>>> Have fun >>>>>> Sven >>>>>> >>>>>> >>>>>> On 29.03.2017 14:15, Maxim Solodovnik wrote: >>>>>> >>>>>> here you are: https://github.com/solomax/ajax-download >>>>>>> Absolutely don't understand what is going on :( >>>>>>> >>>>>>> On Wed, Mar 29, 2017 at 6:30 PM, Maxim Solodovnik < >>>>>>> >>>>>> [email protected]> >>> >>>> wrote: >>>>>>> >>>>>>> Yep, zip file is valid >>>>>>>> Breakpoint at AjaxDownload.ResourceBehavior#onRequest() is not hit >>>>>>>> >>>>>>> :( >>> >>>> Will try to create quickstart >>>>>>>> >>>>>>>> something extremely weird >>>>>>>> >>>>>>>> On Wed, Mar 29, 2017 at 2:22 AM, Martin Grigorov < >>>>>>>> >>>>>>> [email protected]> >>> >>>> wrote: >>>>>>>> >>>>>>>> Hi Maxim, >>>>>>>>> >>>>>>>>> On Tue, Mar 28, 2017 at 11:06 AM, Maxim Solodovnik < >>>>>>>>> [email protected]> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>> 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 >>>>>>>>>> >>>>>>>>>> You do not set file name anywhere! >>>>>>>>>> >>>>>>>>> Keep a reference to the constructed ResourceResponse and call its >>>>>>>>> #setFileName(...) >>>>>>>>> >>>>>>>>> >>>>>>>>> 2) is not valid zip file (cannot be opened) >>>>>>>>> >>>>>>>>>> Is the backupPath representing a ZIP file ? >>>>>>>>>> >>>>>>>>> >>>>>>>>> 3) for some reason I'm not able to get to breakpoint at line 115 >>>>>>>>> [1] >>>>>>>>> >>>>>>>>>> Put a breakpoint at >>>>>>>>>> AjaxDownload.ResourceBehavior#onResourceRequested() >>>>>>>>>> >>>>>>>>> and >>>>>>>>> see what happens >>>>>>>>> >>>>>>>>> >>>>>>>>> Additionally I got NotSerializable exception in case I made >>>>>>>>> >>>>>>>> "download" >>> >>>> class final variable >>>>>>>>>> >>>>>>>>>> java.nio.file.Path is not Serializable! >>>>>>>>>> >>>>>>>>> >>>>>>>>> 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 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>> WBR >>>>>>>> Maxim aka solomax >>>>>>>> >>>>>>>> >>>>>>> >>> >>> -- >>> WBR >>> Maxim aka solomax >>> >>> >
