Hi all I have an issue submitting a file in IE. It is kind of an evolving
problem and is getting out of hand, I'm sure there is an easier solution.
First of all. I have an ajax ModalWindow that pops up and shows a label and
and the file input. This didn't upload anything on any browser, I guess
because nested forms are replace with divs and for some reason did not
submit as multipart.


this is the evolving part. :-)

After that, I'll tried an alternative that is working on Firefox but not on
IE, which was to add a multipart form on my page and another one on the
ModalWindow, and with an ajaxlink I Add the following JS code, that clones
the file-input of the ModalWindow to the Pages Form and then submits the
Pages Form. This works but not on IE.

Here is the intricate solution:


         @Override
         public void onClick(AjaxRequestTarget cAjaxRequestTarget) {
            String sFormId;
            String sFileInputId;

            MainPage cMainPage = (MainPage) cAjaxRequestTarget.getPage();

            sFormId = cMainPage.getImportForm().getMarkupId();
            sFileInputId =
cMainPage.getImportForm().getFileUploadField().getMarkupId();

            String sSubmitScript = "" +
                  "var cImportForm = document.getElementById('" + sFormId +
"');\n" +
                  "var cImportFileInput = document.getElementById('" +
sFileInputId + "');\n" +
                  "var cFileInput = document.getElementById('" +
cUploadField.getMarkupId() + "');\n" + //cUploadField is the FileInput from
the current ModalWindow that holds the ajax-link (whos onClick I'm
overriding)
                  "var sValue = cFileInput.value;\n" +
                  "if (typeof(sValue)!=\"undefined\" && sValue.length>5) {"
+
                  "   var cClone = cFileInput.cloneNode(true);\n" +
                  "  var sName = cImportFileInput.name;\n" +
                  "  cClone.name = sName;\n" +
                  "
 cImportFileInput.parentNode.removeChild(cImportFileInput);\n" +
                  "  cImportForm.appendChild(cClone);\n" +
                  "  cImportForm.submit();\n" +
                  "}";


            cAjaxRequestTarget.appendJavascript(sSubmitScript);
         }

As the Subject, what I need is to submit a file from an Ajax ModalWindow. Is
this possible?

Thanks,
f(t)

Reply via email to