Hello,

 

I've made an upload form and wanted to add a cancel button to it.  The
cancel button is clicked if the user decides he doesn't want to upload
(before he uploads) and should redirect back to another page.  This works
pretty well except I noticed that if the user chooses a file then clicks the
cancel button, the file starts uploading anyway!  Here's the code that does
this.  I can't see why it's happening:

 

 

import org.apache.wicket.authorization.strategies.role.Roles;

import
org.apache.wicket.authorization.strategies.role.annotations.AuthorizeInstant
iation;

import
org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;

import org.apache.wicket.extensions.wizard.CancelButton;

import org.apache.wicket.markup.html.WebPage;

import org.apache.wicket.markup.html.form.Form;

import org.apache.wicket.markup.html.form.TextField;

import org.apache.wicket.markup.html.form.Button;

import org.apache.wicket.markup.html.form.upload.FileUpload;

import org.apache.wicket.markup.html.form.upload.FileUploadField;

import org.apache.wicket.markup.html.panel.FeedbackPanel;

import org.apache.wicket.model.PropertyModel;

import org.apache.wicket.util.file.Files;

import org.apache.wicket.util.file.Folder;

 

import java.io.File;

 

@AuthorizeInstantiation(Roles.USER)

public class CreateAReport extends WebPage {

 

    private String reportName;

 

    public CreateAReport() {

        final FileUploadForm form = new FileUploadForm("form");

        final UploadProgressBar progressBar = new
UploadProgressBar("progress", form);

 

        form.add(progressBar);

        form.add(new TextField("name", new PropertyModel(this,
"reportName")).setRequired(true));

 

        Button submit = new Button("submitbutton") {

            public void onSubmit() {

                form.upload();

                setResponsePage(CustomReport.class);

            }

        };

        form.add(submit);

 

        Button cancel = new Button("cancelbutton") {

            public void onSubmit() {                                

                setResponsePage(ReportList.class);

            }

        };

        cancel.setDefaultFormProcessing(false);

        form.add(cancel);

        

        add(form);

 

        add(new FeedbackPanel("feedback"));

    }

 

    public String getReportName() {

        return reportName;

    }

 

    public void setReportName(String reportName) {

        this.reportName = reportName;

    }

 

    private class FileUploadForm extends Form {

        protected FileUploadField fileUploadField;

        protected File newFile;

 

        /**

         * Construct.

         *

         * @param name Component name

         */

        public FileUploadForm(String name) {

            super(name);

 

            // set this form to multipart mode (allways needed for uploads!)

            setMultiPart(true);

 

            // Add one file input field

            add(fileUploadField = new FileUploadField("fileInput"));

            fileUploadField.setRequired(true);

 

            // Set maximum size to 100K for demo purposes

//            setMaxSize(Bytes.kilobytes(100));

        }

 

        public void upload() {

            final FileUpload upload = fileUploadField.getFileUpload();

            if (upload != null) {

                // Create a new file

                newFile = new File(getUploadFolder(),
upload.getClientFileName());

 

                // Check new file, delete if it allready existed

                checkFileExists(newFile);

                try {

                    // Save to new file

                    newFile.createNewFile();

                    upload.writeTo(newFile);

                } catch (Exception e) {

                    throw new IllegalStateException("Unable to write file: "
+ newFile.getAbsolutePath());

                }

            }

        }

 

        public File getFile() {

            return newFile;

        }

    }

 

    private void checkFileExists(File newFile) {

        if (newFile.exists()) {

            // Try to delete the file

            if (!Files.remove(newFile)) {

                throw new IllegalStateException("Unable to overwrite " +
newFile.getAbsolutePath());

            }

        }

    }

 

    private Folder getUploadFolder() {

        Folder uploadFolder = new
Folder(System.getProperty("java.io.tmpdir"), "wicket-uploads");

        // Ensure folder exists

        uploadFolder.mkdirs();

        return uploadFolder;

    }

 

}

Reply via email to