You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Pete Poulos <pe...@gmail.com> on 2009/10/06 03:11:58 UTC

Problems using upload inside an ajax zone

I'm trying to create an ImageUpload component using tapestry-upload.
Once the user selects a file and submits the form, I want to replace
that form with the image itself.  However, I have found an issue where
the form starts behaving differently when I place the tapestry-upload
field inside the form.

In the code below, when the upload component is NOT present, the
onSuccess() method/event is called when the user presses the submit
button.  However, when the upload component is added to the form, the
form no longer generates the onSuccess() method/event but begins
generating the onSubmit() method/event (which it wasn't previously
doing).

If you remove the zone parameter from the form, it works as expected
(the form generates onSuccess() while the upload component is
present).

I am at a complete loss as to what is going on.  Am I doing something
wrong, or is this a bug of some sort?

Here is some sample code to reproduce the problem.

Thanks,
Pete Poulos

.tml file
----------------------------------------

<t:zone  t:id="zoneId" id="zoneId"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
xmlns:p="tapestry:parameter">
         <t:form t:zone="zoneId">
           <t:errors/>

           <input t:type="upload" t:id="file" validate="required"/>
           <br/>

           <input type="submit" value="submit" />
         </t:form>
</t:zone>


Java File
---------------------------------------

public class ImageUpload {

   @Property
   private UploadedFile file;

}

   public void onSubmit() {
      System.out.println( "SUBMIT" );
   }

   public Object onSuccess() {
       System.out.println( "SUCCESS" );
       return this;
   }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Problems using upload inside an ajax zone

Posted by Sergey Didenko <se...@gmail.com>.
All solutions are either java/flash based or pretty hacky. See
http://stackoverflow.com/questions/166221/how-to-upload-file-jquery

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Problems using upload inside an ajax zone

Posted by Toby Hobson <to...@googlemail.com>.
One option is to use a hidden iframe, not technically ajax but it achieves
the same result

2009/10/6 Pete Poulos <pe...@gmail.com>

> Ok, so if what you are saying is correct, then unless I want to use
> yet another technology on this project (which i don't) I will have to
> forget using ajax and reload the whole page?
>
> Can does anyone else have a work around on the problem?  Can anyone
> shed some light on what's going on?
>
> Thanks,
> Pete Poulos
>
> On Mon, Oct 5, 2009 at 8:35 PM, Toby Hobson <to...@googlemail.com>
> wrote:
> > Its about 12 months since I used Tapestry but if I remember correctly
> file
> > uploads and ajax don't play well together ... it's not specific to T5,
> ajax
> > and multipart forms just don't work together. If I remember correctly I
> used
> > a flash based solution to handle ajax style file uploads ... I'll dig
> > through some of my old code and report back
> >
> > Toby
> >
> > 2009/10/6 Pete Poulos <pe...@gmail.com>
> >
> >> I'm trying to create an ImageUpload component using tapestry-upload.
> >> Once the user selects a file and submits the form, I want to replace
> >> that form with the image itself.  However, I have found an issue where
> >> the form starts behaving differently when I place the tapestry-upload
> >> field inside the form.
> >>
> >> In the code below, when the upload component is NOT present, the
> >> onSuccess() method/event is called when the user presses the submit
> >> button.  However, when the upload component is added to the form, the
> >> form no longer generates the onSuccess() method/event but begins
> >> generating the onSubmit() method/event (which it wasn't previously
> >> doing).
> >>
> >> If you remove the zone parameter from the form, it works as expected
> >> (the form generates onSuccess() while the upload component is
> >> present).
> >>
> >> I am at a complete loss as to what is going on.  Am I doing something
> >> wrong, or is this a bug of some sort?
> >>
> >> Here is some sample code to reproduce the problem.
> >>
> >> Thanks,
> >> Pete Poulos
> >>
> >> .tml file
> >> ----------------------------------------
> >>
> >> <t:zone  t:id="zoneId" id="zoneId"
> >> xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
> >> xmlns:p="tapestry:parameter">
> >>         <t:form t:zone="zoneId">
> >>           <t:errors/>
> >>
> >>           <input t:type="upload" t:id="file" validate="required"/>
> >>           <br/>
> >>
> >>           <input type="submit" value="submit" />
> >>         </t:form>
> >> </t:zone>
> >>
> >>
> >> Java File
> >> ---------------------------------------
> >>
> >> public class ImageUpload {
> >>
> >>   @Property
> >>   private UploadedFile file;
> >>
> >> }
> >>
> >>   public void onSubmit() {
> >>      System.out.println( "SUBMIT" );
> >>   }
> >>
> >>   public Object onSuccess() {
> >>       System.out.println( "SUCCESS" );
> >>       return this;
> >>   }
> >> }
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >> For additional commands, e-mail: users-help@tapestry.apache.org
> >>
> >>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: Problems using upload inside an ajax zone

Posted by Pete Poulos <pe...@gmail.com>.
Ok, so if what you are saying is correct, then unless I want to use
yet another technology on this project (which i don't) I will have to
forget using ajax and reload the whole page?

Can does anyone else have a work around on the problem?  Can anyone
shed some light on what's going on?

Thanks,
Pete Poulos

On Mon, Oct 5, 2009 at 8:35 PM, Toby Hobson <to...@googlemail.com> wrote:
> Its about 12 months since I used Tapestry but if I remember correctly file
> uploads and ajax don't play well together ... it's not specific to T5, ajax
> and multipart forms just don't work together. If I remember correctly I used
> a flash based solution to handle ajax style file uploads ... I'll dig
> through some of my old code and report back
>
> Toby
>
> 2009/10/6 Pete Poulos <pe...@gmail.com>
>
>> I'm trying to create an ImageUpload component using tapestry-upload.
>> Once the user selects a file and submits the form, I want to replace
>> that form with the image itself.  However, I have found an issue where
>> the form starts behaving differently when I place the tapestry-upload
>> field inside the form.
>>
>> In the code below, when the upload component is NOT present, the
>> onSuccess() method/event is called when the user presses the submit
>> button.  However, when the upload component is added to the form, the
>> form no longer generates the onSuccess() method/event but begins
>> generating the onSubmit() method/event (which it wasn't previously
>> doing).
>>
>> If you remove the zone parameter from the form, it works as expected
>> (the form generates onSuccess() while the upload component is
>> present).
>>
>> I am at a complete loss as to what is going on.  Am I doing something
>> wrong, or is this a bug of some sort?
>>
>> Here is some sample code to reproduce the problem.
>>
>> Thanks,
>> Pete Poulos
>>
>> .tml file
>> ----------------------------------------
>>
>> <t:zone  t:id="zoneId" id="zoneId"
>> xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
>> xmlns:p="tapestry:parameter">
>>         <t:form t:zone="zoneId">
>>           <t:errors/>
>>
>>           <input t:type="upload" t:id="file" validate="required"/>
>>           <br/>
>>
>>           <input type="submit" value="submit" />
>>         </t:form>
>> </t:zone>
>>
>>
>> Java File
>> ---------------------------------------
>>
>> public class ImageUpload {
>>
>>   @Property
>>   private UploadedFile file;
>>
>> }
>>
>>   public void onSubmit() {
>>      System.out.println( "SUBMIT" );
>>   }
>>
>>   public Object onSuccess() {
>>       System.out.println( "SUCCESS" );
>>       return this;
>>   }
>> }
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Problems using upload inside an ajax zone

Posted by Toby Hobson <to...@googlemail.com>.
Its about 12 months since I used Tapestry but if I remember correctly file
uploads and ajax don't play well together ... it's not specific to T5, ajax
and multipart forms just don't work together. If I remember correctly I used
a flash based solution to handle ajax style file uploads ... I'll dig
through some of my old code and report back

Toby

2009/10/6 Pete Poulos <pe...@gmail.com>

> I'm trying to create an ImageUpload component using tapestry-upload.
> Once the user selects a file and submits the form, I want to replace
> that form with the image itself.  However, I have found an issue where
> the form starts behaving differently when I place the tapestry-upload
> field inside the form.
>
> In the code below, when the upload component is NOT present, the
> onSuccess() method/event is called when the user presses the submit
> button.  However, when the upload component is added to the form, the
> form no longer generates the onSuccess() method/event but begins
> generating the onSubmit() method/event (which it wasn't previously
> doing).
>
> If you remove the zone parameter from the form, it works as expected
> (the form generates onSuccess() while the upload component is
> present).
>
> I am at a complete loss as to what is going on.  Am I doing something
> wrong, or is this a bug of some sort?
>
> Here is some sample code to reproduce the problem.
>
> Thanks,
> Pete Poulos
>
> .tml file
> ----------------------------------------
>
> <t:zone  t:id="zoneId" id="zoneId"
> xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
> xmlns:p="tapestry:parameter">
>         <t:form t:zone="zoneId">
>           <t:errors/>
>
>           <input t:type="upload" t:id="file" validate="required"/>
>           <br/>
>
>           <input type="submit" value="submit" />
>         </t:form>
> </t:zone>
>
>
> Java File
> ---------------------------------------
>
> public class ImageUpload {
>
>   @Property
>   private UploadedFile file;
>
> }
>
>   public void onSubmit() {
>      System.out.println( "SUBMIT" );
>   }
>
>   public Object onSuccess() {
>       System.out.println( "SUCCESS" );
>       return this;
>   }
> }
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>