The following code illustrates what I am doing:

<t:form t:id="form" ...>
    <t:loop source="items" value="item" ...>
        <t:textfield t:id="quantity" value="item.quantity" .../>
    </t:loop>
</t:form>

@InjectComponent private Form form;
@InjectComponent private TextField quantity;
@Property private Item item;

void onValidateForm() {
    for (Item i: getItems()) {
        if (...cross-field check...) {
            form.recordError( quantity, "Error message");
        }
    }
}

What I find is that when I get to onValidateForm(), the injected quantity
field is always the last instance (the one bound to the last item). I need a
way to get the instance that matches the current item in the for loop.

Hope that clarifies my question. Thanks.

Benny


On Wed, Feb 2, 2011 at 6:21 AM, Thiago H. de Paula Figueiredo <
thiag...@gmail.com> wrote:

> On Wed, 02 Feb 2011 02:26:45 -0200, Benny Law <benny.mk....@gmail.com>
> wrote:
>
>  Hi,
>>
>
> Hi!
>
>  I have a loop inside a form that renders a textfield and some other
>> controls. When I am doing cross field validations in the ValidateForm
>> event while iterating over a collection (the source of the loop), I would
>> like to record error messages against the form with the field in error to
>> get the
>> normal error highlighting. How can I get to the field in this case since I
>> can't use normal injection?
>>
>
> Why not? Even when inside a loop, you don't have more than one instance of
> a given component. Example:
>
> <t:loop ...>
>    <t:textfield t:id="title".../>
> </t:loop>
>
> You have only one instance of the TextField with t:id "title", regardless
> of the number of iterations.
>
> I don't know if this solves your problem, but at least I'm trying to help
> you figure it out. ;)
>
> --
> Thiago H. de Paula Figueiredo
> Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,
> and instructor
> Owner, Ars Machina Tecnologia da Informação Ltda.
> http://www.arsmachina.com.br
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to