I could be wrong, but I think the For component does some special logic when
doing loops, like the case where it is looping over things in the form. It
should magically resolve the "current" object you are referencing when the
form is submitted.
Foreach does not do any of this special magic, so when your listener is
invoked, there is no concept of a "current" object, as it was a direct
invocation.
Doesn't the For component work just as well in or outside of a Form?
On 8/30/05, Denis Souza <[EMAIL PROTECTED]> wrote:
>
> Consider this example:
>
>
>
> In my html template:
>
>
>
> .
>
>
>
> <table>
>
> .
>
> <tr jwcid="@Foreach" element="tr" source="ognl:myList"
> value="ognl:listItem">
>
> <td> . </td>
>
> <td><input type="submit" jwcid="@Submit"
> listener="listener:removeItem" label="message:remove"/></td>
>
> </tr>
>
> </table>
>
> .
>
>
>
> In my java class I have a listener:
>
>
>
> public void removeItem() {
>
> getMyList().remove (getlistItem());
>
> }
>
>
>
>
>
> So, to put it in English, I have a Foreach loop with a listener inside it
> that is supposed to remove an item from the list being displayed.
>
> Whenever I click one of the "remove" buttons my removeItem() method is
> called as it should, except that the item returned by "getListItem()" is
> always the last item in the list. It's never the item corresponding to the
> removed button I clicked, so I always end up removing the last item, no
> matter which button I click on.
>
> When I use "For" instead of "Foreach" not only does the "getListItem()"
> contain the last item in the list, but the list is intact when the page is
> reloaded (no items removed).
>
>
>
> To me this seems very strange since there is no other way of knowing which
> of the buttons was clicked. I don't know if I'm doing something wrong or
> if
> it's a bug. I understand that doing this was an issue in Tapestry 3 due to
> limitations during the rewind cycle and I had to use some special logic to
> do it. I thought in Tapestry 4 I could use this more direct approach but
> maybe I'm still missing something.
>
>
>
> I'm using Tapestry4-beta5 but I tried it with beta4 and got the same
> problem.
>
>
>
> Any ideas?
>
>
>
> Thanks
>
> Denis Souza
>
>
>
>
>