On Tue, May 20, 2014 at 11:09 PM, Thiago H de Paula Figueiredo < thiag...@gmail.com> wrote:
> On Tue, 20 May 2014 14:45:48 -0300, Ilya Obshadko <ilya.obsha...@gmail.com> > wrote: > > Yes, this is it. I have a component which is looped over. >> >> class MyComponent { >> @Parameter >> private MyObject obj; // assigned inside a loop >> >> void onSelectedFromSubmitControl ( ... ) { >> } >> } >> >> 1) initially I tried to simply use MyObject instance passed as a parameter >> inside AjaxFormLoop; >> > > This won't work if you don't pass it as the context of Submit. Submit > passes to the event handler the context it receives, without any guessing. > > 2) then, I tried to pass this instance as context., getting the >> same results >> > > This will only work if you contribute a ValueEncoder for MyObject. > > > 3) finally, I tried to use obj.id as a context parameter instead - again, >> onSelectedFromSubmitControl was being called with context parameter >> belonging to the last iteration of the outside loop >> > > Outside loop? So there's nested loops? There's only one loop. By 'outside' I meant 'enclosing'. At this point I gave up and solved the problem otherwise, without having to > >> rely on t:submit context. >> >> I guess I understand your point, but t:submit does not encode context >> inside submission URL (unlike t:actionlink or t:eventlink). Probably >> that's >> the reason why my initial approach didn't work. >> > > If you're correct, and I haven't done any testing to know if you do, then > it's a bug. Have you tried, in a separate page, something similar but > simple enough to reproduce the problem? No, I didn't. In fact, when t:submit is being used inside a loop and IS NOT ENCLOSED BY >> OTHER COMPONENT, this scheme works. >> > > It shouldn't make any difference (not being enclosed by other component). > It may indicate an error in your part. It may be a bug in Submit. Looking > at the source (5.1, unfortunately I'm working on projects still using that > version), it seems to be a problem in Submit, but I won't be sure until I > run or see an example. The code I'm working on is not open source. I could create some private gists, if that works for you. Let me know. > > For example, in the same application I have constructs like: >> >> <t:ajaxformloop> >> <t:submit t:id="someId" p:context="loopContext"/> >> </t:ajaxformloop> >> > > I'm not sure the p: prefix is actually valid here. t: is the one usually > used for non-block parameters, while p: is used for block ones. Never had any problem with p: prefix actually. -- Ilya Obshadko