Hi

I think FormInjector will better suits to your needs.

Regards,
Christophe Cordenier.

2010/5/26 lebenski <be...@gamesys.co.uk>

>
> I'll start by giving this problem a bit of background.  I've been charged
> with adding 'Postcode Lookup' functionality to the registration form on our
> site.  When a user enters a postcode, it calls off to a third party
> service,
> and we provide a set of possible addresses in a drop down box.  The user
> selects one, and we use this selection to populate a bunch of form fields.
> There are three clear states here
>
> a) Initial State (Postcode Field)
> b) Select Address State (Select box)
> c) Display selected address state (a bunch of text fields)
>
> I felt that Tapestry Zones in conjunction with action links (using Inge's
> ZoneUpdater mixin to get the form values into the page class) should be
> suitable for this problem.
>
> Of course our registration form has a whole bunch of fields besides address
> fields, and we want to encapsulate the postcode lookup logic into a
> component.  So, on to the problem.  Here is a cutdown version of my
> template:
>
> <t:form t:id="registerForm">
>
> ... other fields here ...
>
> <t:addressLookup/>
>
> <t:submit/>
>
> </t:form>
>
> Address Lookup Template:
>
>        <t:zone t:id="addressZone" id="addressZone" t:update="show">
>                <t:delegate to="addressStatus" />
>        </t:zone>
>
>        <t:block t:id="findAddressBlock">
>                <t:label for="findHouseNumber" />
>                <t:textfield t:id="findHouseNumber" t:value="houseNumber"/>
>                <t:label for="postCode" />
>                <t:textfield t:id="findPostCode" t:value="postCode"/>
>                <t:actionlink t:id="findAddressLink" zone="addressZone">Find
> Address</t:actionlink>
>        </t:block>
>
> <t:block t:id="selectAddressBlock">
>                <t:select t:id="selectAddress"
> t:value="selectedAddressIndex"
> t:model="addressModel" blankOption="never" t:mixins="zoneUpdater"
> zone="addressZone" t:event="selectChange" t:clientEvent="change"/>
>                <t:actionlink t:id="selectAddressLink">Select
> Address</t:actionlink>
>        </t:block>
>
>        <t:block t:id="displayAddressBlock">
>        .... some form fields here ...
>        </t:block>
>
> The actionlinks and basic zone functionality is working fine, but when my
> addressStatus delegate returns (for example) the selectAddressBlock as part
> of a zone update, I get the following error:
>
> "org.apache.tapestry5.ioc.internal.util.TapestryException: The Select
> Address component must be enclosed by a Form component"
>
> Whats happening here is that Tapestry is unable to attach the new form
> fields to their containing form.  I've had a read around and the only
> solution seems to be to put the whole form inside the zone.  This isn't
> really viable in this case, because our register form is quite large and it
> breaks the nice componentisation that Tapestry is giving us.
>
> Thought I'd throw it out there to the ever helpful Tapestry mailing list
> and
> see if you can provide any nuggets of advice or perhaps suggestions for an
> alternative to using Zones.
>
> --
> View this message in context:
> http://old.nabble.com/Updating-a-Zone-with-just-form-fields-%28not-the-form-itself%29-tp28679165p28679165.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>


-- 
Regards,
Christophe Cordenier.

Developer of wooki @wookicentral.com

Reply via email to