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

reiern70 pushed a commit to branch reiern70/WICKET-7033
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/reiern70/WICKET-7033 by this 
push:
     new 9d162710af [WICKET-7033] WIP
9d162710af is described below

commit 9d162710af31c6eb2610d54c886b1d4075f5075e
Author: reiern70 <[email protected]>
AuthorDate: Fri Apr 7 14:23:14 2023 +0300

    [WICKET-7033] WIP
---
 .../resource/AbstractFileUploadResource.java       | 12 +++++++
 .../resource/SingleFileUploadToResourceField.java  |  2 +-
 .../resource/SingleFileUploadToResourceField.js    |  5 +--
 .../examples/upload/UploadToResourcePage.html      |  2 +-
 .../examples/upload/UploadToResourcePage.java      | 37 ++++++++++++++++++----
 5 files changed, 48 insertions(+), 10 deletions(-)

diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/AbstractFileUploadResource.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/AbstractFileUploadResource.java
index 6b9d35a356..843b418c4e 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/AbstractFileUploadResource.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/AbstractFileUploadResource.java
@@ -21,6 +21,9 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadBase;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
 import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
@@ -112,6 +115,15 @@ public abstract class AbstractFileUploadResource extends 
AbstractResource
                        }
 
                }
+               catch (FileUploadException e)
+               {
+                       if (e instanceof 
FileUploadBase.FileSizeLimitExceededException || e instanceof 
FileUploadBase.SizeLimitExceededException)
+                       {
+                               resourceResponse.setError(413, "File size 
exceeded!");
+                               return resourceResponse;
+                       }
+                       throw new WicketRuntimeException(e);
+               }
                catch (Exception fux)
                {
                        LOG.error("An error occurred while uploading a file", 
fux);
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/SingleFileUploadToResourceField.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/SingleFileUploadToResourceField.java
index 005bbc198a..912b9864b7 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/SingleFileUploadToResourceField.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/SingleFileUploadToResourceField.java
@@ -138,7 +138,7 @@ public abstract class SingleFileUploadToResourceField 
extends FileUploadField {
                 + getMarkupId() + " = new 
Wicket.SingleFileUploadToResourceField("
                 + jsonObject + ","
                 + getClientSideSuccessCallBack() + "," + 
getClientSideErrorCallBack() + ","
-                + getConnectionErrorCallBack() + "); console.log(" + 
getMarkupId() + ");"));
+                + getConnectionErrorCallBack() + ");"));
     }
 
     public String getTriggerUploadScript()
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/SingleFileUploadToResourceField.js
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/SingleFileUploadToResourceField.js
index d3ba8777fc..b210a9ce11 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/SingleFileUploadToResourceField.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/resource/SingleFileUploadToResourceField.js
@@ -27,7 +27,6 @@
 
     Wicket.SingleFileUploadToResourceField = function (settings, 
clientSideSuccessCallBack, clientSideErrorCallBack, connectionErrorCallBack)
     {
-        console.log(settings);
         this.inputName = settings.inputName;
         this.input = document.getElementById(this.inputName);
         this.resourceUrl = settings.resourceUrl + "?uploadId=" + 
this.inputName;
@@ -39,7 +38,6 @@
 
     Wicket.SingleFileUploadToResourceField.prototype.upload = function()
     {
-        console.log("Wicket.SingleFileUploadToResourceField.prototype.upload");
         // we add the file (yes only one) to a FormData object.
         var formData = new FormData();
         var file = this.input.files[0];
@@ -77,12 +75,15 @@
             },
             error: function (jqXHR, textStatus, errorThrown) {
                 // the thing failed. Tell UploadPanel about this.
+                console.log(textStatus);
                 if (textStatus === "abort") {
                     self.clientSideErrorCallBack();
                     var ep = {'success': false, 'errorMessage': 'Upload failed 
because aborted request!'};
                     Wicket.Ajax.get({"u": self.ajaxCallBackUrl, "ep": ep});
                 } else if (textStatus === "error"){
                     // this happens if there is some connection error
+                    var ep = {'success': false, 'errorMessage': errorThrown};
+                    Wicket.Ajax.get({"u": self.ajaxCallBackUrl, "ep": ep});
                     self.connectionErrorCallBack();
                 } else if (textStatus === "parsererror"){
                     var data = jqXHR.responseText;
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/upload/UploadToResourcePage.html
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/upload/UploadToResourcePage.html
index 1980715d9c..7cb95a8b76 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/upload/UploadToResourcePage.html
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/upload/UploadToResourcePage.html
@@ -19,7 +19,7 @@
                        <label wicket:for="fileInput">File</label>
                        <input wicket:id="fileInput" type="file"/>
            </p>
-                <a wicket:id="upload" type="button">Upload to a resource</a>
+                <input wicket:id="upload" type="button" value="Upload to a 
resource"/>
                 <input wicket:id="cancelUpload" type="button" value="Cancel 
upload"/>
         </fieldset>
     </div>
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/upload/UploadToResourcePage.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/upload/UploadToResourcePage.java
index edb68eec69..32de1f3542 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/upload/UploadToResourcePage.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/upload/UploadToResourcePage.java
@@ -17,8 +17,11 @@
 package org.apache.wicket.examples.upload;
 
 import java.io.File;
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.event.IEvent;
 import org.apache.wicket.examples.WicketExamplePage;
 import org.apache.wicket.markup.html.form.upload.resource.IUploadsFileManager;
 import 
org.apache.wicket.markup.html.form.upload.resource.SingleFileUploadToResourceField;
@@ -34,6 +37,24 @@ import org.apache.wicket.util.file.Files;
 @SuppressWarnings("serial")
 public class UploadToResourcePage extends WicketExamplePage
 {
+       private static class UpdateInEachAjaxRequestBehavior extends Behavior
+       {
+
+               @Override
+               public void bind(Component component)
+               {
+                       component.setOutputMarkupPlaceholderTag(true);
+               }
+
+               @Override
+               public void onEvent(Component component, IEvent<?> event)
+               {
+                       if (event.getPayload() instanceof AjaxRequestTarget)
+                       {
+                               
((AjaxRequestTarget)event.getPayload()).add(component);
+                       }
+               }
+       }
 
        private final FeedbackPanel uploadFeedback;
 
@@ -78,30 +99,34 @@ public class UploadToResourcePage extends WicketExamplePage
 
                add(new AjaxLink<Void>("upload") {
                        @Override
-                       public void onClick(AjaxRequestTarget target) {
+                       public void onClick(AjaxRequestTarget target)
+                       {
                                uploading = true;
                                
singleFileUploadToResourceField.startUpload(target);
                        }
 
                        @Override
-                       protected void onConfigure() {
+                       protected void onConfigure()
+                       {
                                super.onConfigure();
                                setVisible(!uploading);
                        }
-               });
+               }.add(new UpdateInEachAjaxRequestBehavior()));
 
                add(new AjaxLink<Void>("cancelUpload") {
                        @Override
-                       public void onClick(AjaxRequestTarget target) {
+                       public void onClick(AjaxRequestTarget target)
+                       {
                                
singleFileUploadToResourceField.cancelUpload(target);
                        }
 
                        @Override
-                       protected void onConfigure() {
+                       protected void onConfigure()
+                       {
                                super.onConfigure();
                                setVisible(uploading);
                        }
-               });
+               }.add(new UpdateInEachAjaxRequestBehavior()));
                // Create feedback panels
                uploadFeedback = new FeedbackPanel("uploadFeedback");
                uploadFeedback.setOutputMarkupId(true);

Reply via email to