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);