This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch wicket-8.x
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/wicket-8.x by this push:
     new 638c84a  [WICKET-6648] initiate and onBeforeDownload signatures are 
changed (#351)
638c84a is described below

commit 638c84ac6ef9c9b883e8de17baeee0a806f38e51
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Tue Apr 9 19:34:00 2019 +0700

    [WICKET-6648] initiate and onBeforeDownload signatures are changed (#351)
    
    * [WICKET-6648] initiate and onBeforeDownload signatures are changed
    
    * Cookie clear is moved to JS, example is added
---
 .../examples/ajax/builtin/AjaxDownloadPage.java    | 122 +++++++++++++--------
 .../websocket/WebSocketBehaviorDemoPage.html       |   5 +-
 .../websocket/WebSocketBehaviorDemoPage.java       |  71 +++++++++++-
 .../extensions/ajax/AjaxDownloadBehavior.java      |  65 +++++++----
 .../wicket/extensions/ajax/wicket-ajaxdownload.js  |   3 +-
 5 files changed, 190 insertions(+), 76 deletions(-)

diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
index 70a682d..fdd43fb 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
@@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.extensions.ajax.AjaxDownloadBehavior;
 import org.apache.wicket.extensions.ajax.AjaxDownloadBehavior.Location;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -34,11 +35,12 @@ import org.apache.wicket.util.time.Duration;
 
 /**
  * Ajax download.
- * 
+ *
  * @author svenmeier
  */
 public class AjaxDownloadPage extends BasePage
 {
+       private static final long serialVersionUID = 1L;
        private WebMarkupContainer downloadingContainer;
 
        /**
@@ -50,9 +52,9 @@ public class AjaxDownloadPage extends BasePage
                downloadingContainer.setOutputMarkupPlaceholderTag(true);
                downloadingContainer.setVisible(false);
                add(downloadingContainer);
-               
+
                initDownload();
-               
+
                initDownloadInIframe();
 
                initDownloadInNewWindow();
@@ -75,14 +77,15 @@ public class AjaxDownloadPage extends BasePage
        {
                IResource resource = new ExampleResource("downloaded via ajax")
                        .setContentDisposition(ContentDisposition.ATTACHMENT);
-               
+
                final AjaxDownloadBehavior download = new 
AjaxDownloadBehavior(resource) {
-                       
+                       private static final long serialVersionUID = 1L;
+
                        @Override
-                       protected void onBeforeDownload(AjaxRequestTarget 
target)
+                       protected void 
onBeforeDownload(IPartialPageRequestHandler handler)
                        {
                                downloadingContainer.setVisible(true);
-                               target.add(downloadingContainer);
+                               handler.add(downloadingContainer);
                        }
 
                        @Override
@@ -91,20 +94,22 @@ public class AjaxDownloadPage extends BasePage
                                downloadingContainer.setVisible(false);
                                target.add(downloadingContainer);
                        }
-                       
+
                        @Override
                        protected void onDownloadFailed(AjaxRequestTarget 
target)
                        {
                                downloadingContainer.setVisible(false);
                                target.add(downloadingContainer);
-                               
+
                                target.appendJavaScript("alert('Download 
failed');");
                        }
                };
                add(download);
-               
+
                add(new AjaxLink<Void>("download")
                {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
                        public void onClick(AjaxRequestTarget target)
                        {
@@ -117,14 +122,16 @@ public class AjaxDownloadPage extends BasePage
        {
                IResource resource = new ExampleResource("downloaded via ajax 
in iframe")
                        .setContentDisposition(ContentDisposition.ATTACHMENT);
-               
-               final AjaxDownloadBehavior download = new 
AjaxDownloadBehavior(resource) {
-                       
+
+               final AjaxDownloadBehavior download = new 
AjaxDownloadBehavior(resource)
+               {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
-                       protected void onBeforeDownload(AjaxRequestTarget 
target)
+                       protected void 
onBeforeDownload(IPartialPageRequestHandler handler)
                        {
                                downloadingContainer.setVisible(true);
-                               target.add(downloadingContainer);
+                               handler.add(downloadingContainer);
                        }
 
                        @Override
@@ -133,21 +140,23 @@ public class AjaxDownloadPage extends BasePage
                                downloadingContainer.setVisible(false);
                                target.add(downloadingContainer);
                        }
-                       
+
                        @Override
                        protected void onDownloadFailed(AjaxRequestTarget 
target)
                        {
                                downloadingContainer.setVisible(false);
                                target.add(downloadingContainer);
-                               
+
                                target.appendJavaScript("alert('Download 
failed');");
                        }
                };
                download.setLocation(Location.IFrame);
                add(download);
-               
+
                add(new AjaxLink<Void>("downloadIframe")
                {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
                        public void onClick(AjaxRequestTarget target)
                        {
@@ -155,24 +164,29 @@ public class AjaxDownloadPage extends BasePage
                        }
                });
        }
-       
+
        private void initDownloadReference()
        {
-               ResourceReference reference = new 
ResourceReference("referenceToResource") {
+               ResourceReference reference = new 
ResourceReference("referenceToResource")
+               {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
                        public IResource getResource()
                        {
                                return new StaticResource();
                        }
                };
-               
-               final AjaxDownloadBehavior download = new 
AjaxDownloadBehavior(reference) {
-                       
+
+               final AjaxDownloadBehavior download = new 
AjaxDownloadBehavior(reference)
+               {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
-                       protected void onBeforeDownload(AjaxRequestTarget 
target)
+                       protected void 
onBeforeDownload(IPartialPageRequestHandler handler)
                        {
                                downloadingContainer.setVisible(true);
-                               target.add(downloadingContainer);
+                               handler.add(downloadingContainer);
                        }
 
                        @Override
@@ -181,20 +195,22 @@ public class AjaxDownloadPage extends BasePage
                                downloadingContainer.setVisible(false);
                                target.add(downloadingContainer);
                        }
-                       
+
                        @Override
                        protected void onDownloadFailed(AjaxRequestTarget 
target)
                        {
                                downloadingContainer.setVisible(false);
                                target.add(downloadingContainer);
-                               
+
                                target.appendJavaScript("alert('Download 
failed');");
                        }
                };
                add(download);
-               
+
                add(new AjaxLink<Void>("downloadReference")
                {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
                        public void onClick(AjaxRequestTarget target)
                        {
@@ -208,13 +224,15 @@ public class AjaxDownloadPage extends BasePage
                IResource resource = new ExampleResource("downloaded via ajax 
in a new browser window")
                        .setContentDisposition(ContentDisposition.INLINE);
 
-               final AjaxDownloadBehavior download = new 
AjaxDownloadBehavior(resource) {
+               final AjaxDownloadBehavior download = new 
AjaxDownloadBehavior(resource)
+               {
+                       private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected void onBeforeDownload(AjaxRequestTarget 
target)
+                       protected void 
onBeforeDownload(IPartialPageRequestHandler handler)
                        {
                                downloadingContainer.setVisible(true);
-                               target.add(downloadingContainer);
+                               handler.add(downloadingContainer);
                        }
 
                        @Override
@@ -229,7 +247,7 @@ public class AjaxDownloadPage extends BasePage
                        {
                                downloadingContainer.setVisible(false);
                                target.add(downloadingContainer);
-                               
+
                                target.appendJavaScript("alert('Download 
failed');");
                        }
 
@@ -245,6 +263,8 @@ public class AjaxDownloadPage extends BasePage
 
                add(new AjaxLink<Void>("downloadInNewWindow")
                {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
                        public void onClick(AjaxRequestTarget target)
                        {
@@ -258,13 +278,15 @@ public class AjaxDownloadPage extends BasePage
                IResource resource = new ExampleResource("downloaded via ajax 
in same browser window")
                        .setContentDisposition(ContentDisposition.ATTACHMENT);
 
-               final AjaxDownloadBehavior download = new 
AjaxDownloadBehavior(resource) {
+               final AjaxDownloadBehavior download = new 
AjaxDownloadBehavior(resource)
+               {
+                       private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected void onBeforeDownload(AjaxRequestTarget 
target)
+                       protected void 
onBeforeDownload(IPartialPageRequestHandler handler)
                        {
                                downloadingContainer.setVisible(true);
-                               target.add(downloadingContainer);
+                               handler.add(downloadingContainer);
                        }
 
                        @Override
@@ -279,7 +301,7 @@ public class AjaxDownloadPage extends BasePage
                        {
                                downloadingContainer.setVisible(false);
                                target.add(downloadingContainer);
-                               
+
                                target.appendJavaScript("alert('Download 
failed');");
                        }
 
@@ -295,6 +317,8 @@ public class AjaxDownloadPage extends BasePage
 
                add(new AjaxLink<Void>("downloadInSameWindow")
                {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
                        public void onClick(AjaxRequestTarget target)
                        {
@@ -303,22 +327,24 @@ public class AjaxDownloadPage extends BasePage
                });
        }
 
-       public static class StaticResource extends ResourceStreamResource {
+       public static class StaticResource extends ResourceStreamResource
+       {
+               private static final long serialVersionUID = 1L;
 
                StaticResource() {
                        setFileName("File-from-ResourceReference");
                        setContentDisposition(ContentDisposition.ATTACHMENT);
                        setCacheDuration(Duration.NONE);
                }
-               
+
                @Override
                public void respond(Attributes attributes)
                {
                        AjaxDownloadBehavior.markCompleted(attributes);
-                       
+
                        super.respond(attributes);
                }
-               
+
                @Override
                protected IResourceStream getResourceStream(Attributes 
attributes)
                {
@@ -330,15 +356,17 @@ public class AjaxDownloadPage extends BasePage
                        catch (InterruptedException e)
                        {
                        }
-                       
+
                        return new StringResourceStream("downloaded via ajax 
with resource reference");
                }
        }
-       
-       private class ExampleResource extends ResourceStreamResource {
-               
+
+       private class ExampleResource extends ResourceStreamResource
+       {
+               private static final long serialVersionUID = 1L;
+
                private String content;
-               
+
                private int count = 0;
 
                public ExampleResource(String content)
@@ -348,7 +376,7 @@ public class AjaxDownloadPage extends BasePage
                        setFileName("File-from-IResource.txt");
                        setCacheDuration(Duration.NONE);
                }
-               
+
                @Override
                protected IResourceStream getResourceStream(Attributes 
attributes) {
                        // simulate delay
@@ -359,7 +387,7 @@ public class AjaxDownloadPage extends BasePage
                        catch (InterruptedException e)
                        {
                        }
-                       
+
                        count++;
                        if (count == 3) {
                                count = 0;
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.html
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.html
index f94fa4b..b9b0e92 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.html
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.html
@@ -23,8 +23,9 @@
        </head>
        <body>
                <wicket:extend>
-
-                 <div wicket:id="chartPanel"></div>
+                       <div wicket:id="chartPanel"></div>
+                       <button 
onclick="Wicket.WebSocket.send('start');">Initiate download with Web Socket 
message</button>
+                       <div wicket:id="downloading" 
class="download-veil"><span>Preparing download ...</span></div>
                </wicket:extend>
        </body>
 </html>
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.java
index cf3b321..d27bf29 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.java
@@ -18,23 +18,82 @@ package org.apache.wicket.examples.websocket;
 
 import java.util.concurrent.ScheduledExecutorService;
 
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.examples.WicketExamplePage;
 import org.apache.wicket.examples.websocket.charts.ChartUpdater;
 import org.apache.wicket.examples.websocket.charts.WebSocketChart;
+import org.apache.wicket.extensions.ajax.AjaxDownloadBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.protocol.https.RequireHttps;
 import org.apache.wicket.protocol.ws.api.WebSocketBehavior;
 import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler;
 import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
 import org.apache.wicket.protocol.ws.api.message.TextMessage;
+import org.apache.wicket.request.resource.ContentDisposition;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.request.resource.ResourceStreamResource;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.StringResourceStream;
+import org.apache.wicket.util.time.Duration;
 
 @RequireHttps
 public class WebSocketBehaviorDemoPage extends WicketExamplePage
 {
-       public WebSocketBehaviorDemoPage()
-       {
+       private static final long serialVersionUID = 1L;
+       private final WebMarkupContainer downloadingContainer = new 
WebMarkupContainer("downloading");
+
+       @Override
+       protected void onInitialize() {
+               super.onInitialize();
+
+               ResourceStreamResource resource = new ResourceStreamResource()
+               {
+                       private static final long serialVersionUID = 1L;
+                       private int i = 42;
+
+                       @Override
+                       protected IResourceStream 
getResourceStream(IResource.Attributes attributes)
+                       {
+                               return new StringResourceStream("downloaded via 
ajax " + (i++) + " times");
+                       }
+               }.setContentDisposition(ContentDisposition.ATTACHMENT)
+                       .setFileName("File-from-IResource.txt")
+                       .setCacheDuration(Duration.NONE);
+
+               final AjaxDownloadBehavior download = new 
AjaxDownloadBehavior(resource)
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected void 
onBeforeDownload(IPartialPageRequestHandler handler)
+                       {
+                               downloadingContainer.setVisible(true);
+                               handler.add(downloadingContainer);
+                       }
+
+                       @Override
+                       protected void onDownloadSuccess(AjaxRequestTarget 
target)
+                       {
+                               downloadingContainer.setVisible(false);
+                               target.add(downloadingContainer);
+                       }
+
+                       @Override
+                       protected void onDownloadFailed(AjaxRequestTarget 
target)
+                       {
+                               downloadingContainer.setVisible(false);
+                               target.add(downloadingContainer);
+
+                               target.appendJavaScript("alert('Download 
failed');");
+                       }
+               };
+               add(download);
                WebSocketChart chartPanel = new WebSocketChart("chartPanel");
                chartPanel.add(new WebSocketBehavior()
                {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
                        protected void onConnect(ConnectedMessage message)
                        {
@@ -44,14 +103,20 @@ public class WebSocketBehaviorDemoPage extends 
WicketExamplePage
                                ChartUpdater.start(message, service);
                        }
                });
+               
add(downloadingContainer.setOutputMarkupPlaceholderTag(true).setVisible(false));
                add(chartPanel);
 
                add(new WebSocketBehavior()
                {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
                        protected void onMessage(WebSocketRequestHandler 
handler, TextMessage message)
                        {
-                               super.onMessage(handler, message);
+                               if ("start".equals(message.getText()))
+                               {
+                                       download.initiate(handler);
+                               }
                        }
                });
        }
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownloadBehavior.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownloadBehavior.java
index 4b2a217..609a2be 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownloadBehavior.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownloadBehavior.java
@@ -25,6 +25,7 @@ import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.json.JSONFunction;
 import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.request.Response;
@@ -45,17 +46,17 @@ import com.github.openjson.JSONObject;
  * Download resources via Ajax.
  * <p>
  * Usage:
- * 
+ *
  * <pre>
  * final AjaxDownload download = new AjaxDownload(resource);
  * add(download);
- * 
+ *
  * add(new AjaxButton("download")
  * {
  *     &#64;Override
- *     protected void onSubmit(AjaxRequestTarget target, Form&lt;?> form)
+ *     protected void onSubmit(IPartialPageRequestHandler handler, Form&lt;?> 
form)
  *     {
- *             download.initiate(target);
+ *             download.initiate(handler);
  *     }
  * });
  * </pre>
@@ -63,7 +64,7 @@ import com.github.openjson.JSONObject;
  * <p>To set the name of the downloaded resource make use of
  * {@link 
org.apache.wicket.request.resource.ResourceStreamResource#setFileName(String)} 
or
  * {@link 
org.apache.wicket.request.resource.AbstractResource.ResourceResponse#setFileName(String)}</p>
- * 
+ *
  * @author svenmeier
  * @author Martin Grigorov
  * @author Maxim Solodovnik
@@ -95,7 +96,7 @@ public class AjaxDownloadBehavior extends 
AbstractDefaultAjaxBehavior
                 * the resource has to be a {@link 
ContentDisposition#ATTACHMENT}.
                 * <p>
                 * Note: This will trigger JavaScript <em>unload</em> event on 
the page!
-                * Does not support {@link 
AjaxDownloadBehavior#onDownloadFailed(AjaxRequestTarget)} callback,
+                * Does not support {@link 
AjaxDownloadBehavior#onDownloadFailed(IPartialPageRequestHandler)} callback,
                 * i.e. it is not possible to detect when the download has 
failed!
                 */
                SameWindow,
@@ -127,7 +128,7 @@ public class AjaxDownloadBehavior extends 
AbstractDefaultAjaxBehavior
 
        /**
         * Download of a {@link IResource}.
-        * 
+        *
         * @param resource
         *            resource to download
         */
@@ -143,8 +144,8 @@ public class AjaxDownloadBehavior extends 
AbstractDefaultAjaxBehavior
         * <p>
         * The {@link IResource} returned by {@link 
ResourceReference#getResource()} must call
         * {@link #markCompleted(Attributes)} when responding, otherwise the 
callback
-        * {@link #onDownloadSuccess(AjaxRequestTarget)} will not work.
-        * 
+        * {@link #onDownloadSuccess(IPartialPageRequestHandler)} will not work.
+        *
         * @param reference
         *            reference to resource to download
         */
@@ -158,8 +159,8 @@ public class AjaxDownloadBehavior extends 
AbstractDefaultAjaxBehavior
         * <p>
         * The {@link IResource} returned by {@link 
ResourceReference#getResource()} must call
         * {@link #markCompleted(Attributes)} when responding, otherwise the 
callback
-        * {@link #onDownloadSuccess(AjaxRequestTarget)} will not work.
-        * 
+        * {@link #onDownloadSuccess(IPartialPageRequestHandler)} will not work.
+        *
         * @param reference
         *            reference to resource to download
         * @param resourceParameters
@@ -195,21 +196,25 @@ public class AjaxDownloadBehavior extends 
AbstractDefaultAjaxBehavior
                }
        }
 
+       @Deprecated
+       public void initiate(AjaxRequestTarget target)
+       {
+               initiate((IPartialPageRequestHandler)target);
+       }
+
        /**
         * Call this method to initiate the download.
-        * 
-        * @param target
-        *            the initiating Ajax target
+        *
+        * @param handler
+        *            the initiating RequestHandler
         */
-       public void initiate(AjaxRequestTarget target)
+       public void initiate(IPartialPageRequestHandler handler)
        {
                if (getComponent() == null)
                {
                        throw new WicketRuntimeException("not bound to a 
component");
                }
 
-               
((WebResponse)RequestCycle.get().getResponse()).clearCookie(cookie(getName()));
-
                CharSequence url;
                if (resourceBehavior == null)
                {
@@ -240,15 +245,28 @@ public class AjaxDownloadBehavior extends 
AbstractDefaultAjaxBehavior
                settings.put("downloadUrl", url);
                settings.put("method", 
getLocation().name().toLowerCase(Locale.ROOT));
 
-               
target.appendJavaScript(String.format("Wicket.AjaxDownload.initiate(%s);", 
settings));
+               
handler.appendJavaScript(String.format("Wicket.AjaxDownload.initiate(%s);", 
settings));
 
-               onBeforeDownload(target);
+               if (handler instanceof AjaxRequestTarget) {
+                       onBeforeDownload((AjaxRequestTarget)handler);
+               }
+               onBeforeDownload(handler);
        }
 
+       /**
+        * Please use {@link #onBeforeDownload(IPartialPageRequestHandler)} 
instead
+        *
+        * @param target
+        */
+       @Deprecated
        protected void onBeforeDownload(AjaxRequestTarget target)
        {
        }
 
+       protected void onBeforeDownload(IPartialPageRequestHandler handler)
+       {
+       }
+
        /**
         * A callback executed when the download of the resource finished 
successfully.
         *
@@ -324,6 +342,7 @@ public class AjaxDownloadBehavior extends 
AbstractDefaultAjaxBehavior
         */
        private class ResourceBehavior extends Behavior implements 
IRequestListener
        {
+               private static final long serialVersionUID = 1L;
                private final IResource resource;
 
                private ResourceBehavior(IResource resource)
@@ -336,7 +355,7 @@ public class AjaxDownloadBehavior extends 
AbstractDefaultAjaxBehavior
                {
                        return false;
                }
-               
+
                @Override
                public void onRequest()
                {
@@ -360,7 +379,7 @@ public class AjaxDownloadBehavior extends 
AbstractDefaultAjaxBehavior
         * <p>
         * Has to be called from {@link IResource#respond(Attributes)} when 
downloaded via
         * {@link #AjaxDownloadBehavior(IResource)}.
-        * 
+        *
         * @param attributes
         *            resource attributes
         */
@@ -374,12 +393,12 @@ public class AjaxDownloadBehavior extends 
AbstractDefaultAjaxBehavior
        private static Cookie cookie(String name)
        {
                Cookie cookie = new Cookie(name, "complete");
-               
+
                // has to be on root, otherwise JavaScript will not be able to 
access the
                // cookie when it is set from a different path - which is the 
case when a
                // ResourceReference is used
                cookie.setPath("/");
-               
+
                return cookie;
        }
 }
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
index 6aaa43a..d0e490c 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
@@ -27,7 +27,8 @@
 
        Wicket.AjaxDownload = {
                initiate : function(settings) {
-
+                       document.cookie = settings.name +
+                               '=;path=/;Max-Age=0;expires=Thu, 01 Jan 1970 
00:00:01 GMT';
                        var notifyServer = function(result) {
                                settings.attributes.ep = settings.attributes.ep 
|| {};
                                settings.attributes.ep.result = result;

Reply via email to