When page is loaded it will render two separate hidden inputs with name
t:formdata, one for Form actions, second for Zone actions.

<form>
    <input type="hidden" name="t:formdata" value="[encoded_form_actions]"/>
    ...
    <div id="updateZone">
        <input type="hidden" name="t:formdata"
value="[encoded_zone_actions]"/>
        ...
    </div>
    ...
</form>

When Zone is refreshed it will replace its body with new one and contained
hidden input will also be updated

<form>
    <input type="hidden" name="t:formdata" value="[encoded_form_actions]"/>
    ...
    <div id="updateZone">
        <input type="hidden" name="t:formdata"
value="[encoded_new_zone_actions]"/>
        ...
    </div>
    ...
</form>

Then we will press submit button, Form component will collect t:formdata
value from all submitted hidden controls and then it will execute all
stored in this value actions.


public class Form implements ClientElement, FormValidationControl {

    ...

    private void executeStoredActions() {
        String[] values = request.getParameters(FORM_DATA);
        ...
    }

    ...

}



On Thu, Sep 27, 2012 at 5:37 PM, Michael Wyraz <[email protected]>wrote:

> Will this also apply when the zone is rendered together with the form at
> age loading?
> Or will the submissions of the elements in the zone then go to the form's
> t:formdata field?
>
>> In addition to all this FormFragment and Zone components have their own
>> implementation of FormSupport service that renders separate t:formdata
>> hidden inputs. But to use this functionality on zone you should return
>> whole Zone instead of just its body in event handler.
>>
>> Object onUpdate() {
>>      return updateZone;
>> }
>>
>> So, you have a possibility to change/delete all stored process submissions
>> for components placed inside this zone.
>>
>> On Thu, Sep 27, 2012 at 12:08 PM, Michael Wyraz
>> <[email protected]>**wrote:
>>
>>  Hi,
>>>
>>> yesterday I discussed with a colleague the possibility of replacing T5
>>> form components (parts of a form) with ajax zone updates.
>>> The basic problem is:
>>> - each component registers itself as "process submission" to the form
>>> (via
>>> formsupport)
>>> - the form serializes all those submissions to a hidden field
>>> "t:formdata"
>>> - during submit the submissions are deserialized and executed
>>> So it it not possible to change the submissions without replacing the
>>> whole form. There are some workarounds that allows to add new form field
>>> by
>>> emulating formsupport and add extra t:formdata fields to the form.
>>>
>>> Yesterday we had an idea for a different approach which I'd like to
>>> discuss here. What if each form field would render it's own submission to
>>> it's own t:formdata field? In this case it would not require formsupport
>>> to
>>> register itself to the form. The field would still be handled by the form
>>> during submission. But the component itself could then simply be added or
>>> removed with ajax.
>>>
>>> Regards,
>>> Michael,
>>>
>>>
>>> ------------------------------****----------------------------**
>>> --**---------
>>> To unsubscribe, e-mail: 
>>> dev-unsubscribe@tapestry.**apa**che.org<http://apache.org>
>>> <dev-unsubscribe@**tapestry.apache.org<[email protected]>
>>> >
>>>
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>>
>>
>
> --
> Mit freundlichen Grüßen / Regards
>
> Michael Wyraz
>
> evermind GmbH
> Schorlemmerstraße 1
> 04155 Leipzig
>
> Tel.:       +49 (0)341-25 39 66 - 0
> Fax:        +49 (0)341-25 39 66 - 1
> Funk:       +49 (0)177-73 00 00 3
> E-Mail:     [email protected]
>
> HRB: 21586
> Amtsgericht Leipzig
>
> Geschäftsführer:
> Christoph Klemm
> Thomas Grünert
> Michael Wyraz
>
>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: 
> dev-unsubscribe@tapestry.**apache.org<[email protected]>
> For additional commands, e-mail: [email protected]
>
>


-- 
BR
Ivan

Reply via email to