I tried the fix to populateItem proposed by the original bug reporter (http://issues.apache.org/jira/browse/WICKET-2384) and that seems to work.
On Thu, Aug 27, 2009 at 4:32 PM, Igor Vaynberg<igor.vaynb...@gmail.com> wrote: > well, its either removing components or an outofmemoryexception. which > one do you prefer? :) > > we need to find another way to fix the OOME. can you see one? > > -igor > > On Wed, Aug 26, 2009 at 10:48 PM, Ian MacLarty<ian.macla...@gmail.com> wrote: >> Here is an example of some less trivial behaviour that is done when >> you click an error. This changes to a specific tab that contains the >> erroneous field. The error message that has this behaviour is added >> with some custom validation. >> >> �...@override >> protected void onClick(AjaxRequestTarget target) { >> boolean fieldSelected = false; >> TabbedPanel mainTabs = >> (TabbedPanel)container.findParent(TabbedPanel.class); >> if (mainTabs != null) { >> mainTabs.setSelectedTab(0); // Go to general tab. >> target.addComponent(mainTabs); >> >> target.appendJavascript("adjust_feedback_panel_size();"); >> Component clientDOB = >> mainTabs.get("panel:client.dateOfBirth"); >> if >> (subj.equals(thisModel.getClient().getResource().toString())) { >> target.appendJavascript("$('#" + >> clientDOB.getMarkupId() + >> "').addClass('error').select();"); >> fieldSelected = true; >> } >> if >> (Nulls.falseIfNull(thisModel.getClient().getHasPartner())) { >> Component partnerDOB = >> mainTabs.get("panel:client.partner.dateOfBirth"); >> if >> (subj.equals(thisModel.getClient().getPartner().getResource().toString())) >> { >> String JS = "$('#" + >> partnerDOB.getMarkupId() + "').addClass('error')"; >> if (! fieldSelected) { >> JS += ".select();"; >> } else { >> JS += ";"; >> } >> target.appendJavascript(JS); >> } >> } >> } >> } >> >> This would not very easy to implement as Javascript. >> >> On Thu, Aug 27, 2009 at 3:37 PM, Igor Vaynberg<igor.vaynb...@gmail.com> >> wrote: >>> it doesnt really look like you need a callback, you can simply >>> represent the link as a webmarkupcontainer that adds an onclick >>> javascript. more efficient and does the same thing. >>> >>> -igor >>> >>> On Wed, Aug 26, 2009 at 10:11 PM, Ian MacLarty<ian.macla...@gmail.com> >>> wrote: >>>> It depends on the error. Most of the time the onclick behaviour >>>> simply returns some javascript that highlights the invalid field. >>>> Sometimes it changes the current tab, because the invalid field is on >>>> a different tab. The code looks like this: >>>> >>>> add(new AjaxEventBehavior("onclick") { >>>> �...@override >>>> protected void onEvent(AjaxRequestTarget target) { >>>> target.appendJavascript(onClickJS); >>>> if (msg instanceof PfpFeedbackMessage) { >>>> PfpFeedbackMessage pfpMsg = (PfpFeedbackMessage)msg; >>>> if (pfpMsg.getExtraClickBehavior() != null) { >>>> pfpMsg.getExtraClickBehavior().onClick(target); >>>> } >>>> } >>>> } >>>> }); >>>> >>>> The getExtraClickBehaviour method can return any extra behaviour to do >>>> when the message is clicked (e.g. change the current tab). >>>> >>>> On Thu, Aug 27, 2009 at 3:01 PM, Igor Vaynberg<igor.vaynb...@gmail.com> >>>> wrote: >>>>> what do these links do? >>>>> >>>>> -igor >>>>> >>>>> On Wed, Aug 26, 2009 at 9:51 PM, Ian MacLarty<ian.macla...@gmail.com> >>>>> wrote: >>>>>> Hi Igor, >>>>>> >>>>>> The commit log is simply: >>>>>> >>>>>> Issue: WICKET-2384. >>>>>> >>>>>> >>>>>> From http://issues.apache.org/jira/browse/WICKET-2384: >>>>>> >>>>>> Problem is that we keep reference to FeedbackMessage in component >>>>>> inside MessageListView item. The feedback message references previous >>>>>> page - that causes the problem, because the previous page is >>>>>> serialized together with current (and the page before, etc). >>>>>> >>>>>> Simply removing components from MessageListView should fix the problem. >>>>>> >>>>>> class MessageListView >>>>>> { >>>>>> ... >>>>>> �...@override >>>>>> protected void onDetach() >>>>>> { >>>>>> removeAll(); >>>>>> super.onDetach(); >>>>>> } >>>>>> >>>>>> } >>>>>> >>>>>> >>>>>> By the way if you have any suggestions on how I could work around my >>>>>> problem without having to go back to 1.3.6 I'd love to hear them. >>>>>> >>>>>> Cheers, >>>>>> Ian. >>>>>> >>>>>> On Thu, Aug 27, 2009 at 2:43 PM, Igor Vaynberg<igor.vaynb...@gmail.com> >>>>>> wrote: >>>>>>> before you file a bug report, what was the commit log for that svn >>>>>>> change you found? >>>>>>> >>>>>>> -igor >>>>>>> >>>>>>> On Wed, Aug 26, 2009 at 9:42 PM, Ian MacLarty<ian.macla...@gmail.com> >>>>>>> wrote: >>>>>>>> On Thu, Aug 27, 2009 at 2:09 PM, Ian MacLarty<ian.macla...@gmail.com> >>>>>>>> wrote: >>>>>>>>> On Thu, Aug 27, 2009 at 1:41 PM, Ian MacLarty<ian.macla...@gmail.com> >>>>>>>>> wrote: >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> I recently upgraded to Wicket 1.4 and am now having a problem with a >>>>>>>>>> feedback panel. >>>>>>>>>> >>>>>>>>>> I have a custom feedback panel that uses custom message components >>>>>>>>>> (by >>>>>>>>>> overriding FeedbackPanel#newMessageDisplayComponent). The custom >>>>>>>>>> messages have an AjaxEventBehavior on the "onclick" event. This >>>>>>>>>> highlights the reporting component when the feedback message is >>>>>>>>>> clicked. This all worked okay in 1.3.6, but after upgrading to 1.4 >>>>>>>>>> Wicket throws a RuntimeException when the feedback message is >>>>>>>>>> clicked. >>>>>>>>>> The exception is "component >>>>>>>>>> mainForm:feedback:feedbackul:messages:0:message not found on page >>>>>>>>>> axa.pfp.MainTabs". If I look in the generated html this component >>>>>>>>>> definitely seems to be there. Does anyone know what might have >>>>>>>>>> changed with version 1.4 to break this? >>>>>>>>>> >>>>>>>>> >>>>>>>>> I suspect it is the change made in revision 796389: >>>>>>>>> >>>>>>>>> Index: >>>>>>>>> wicket/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java >>>>>>>>> =================================================================== >>>>>>>>> --- >>>>>>>>> wicket/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java >>>>>>>>> (revision >>>>>>>>> 796388) >>>>>>>>> +++ >>>>>>>>> wicket/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java >>>>>>>>> (revision >>>>>>>>> 796389) >>>>>>>>> @@ -94,6 +94,13 @@ >>>>>>>>> listItem.add(levelModifier); >>>>>>>>> listItem.add(label); >>>>>>>>> } >>>>>>>>> + >>>>>>>>> + @Override >>>>>>>>> + protected void onDetach() >>>>>>>>> + { >>>>>>>>> + removeAll(); >>>>>>>>> + super.onDetach(); >>>>>>>>> + } >>>>>>>>> } >>>>>>>>> >>>>>>>>> private static final long serialVersionUID = 1L; >>>>>>>>> >>>>>>>>> The removeAll is removing all the child elements of the feedback >>>>>>>>> message list, which explains why it is not finding the component. >>>>>>>>> >>>>>>>> >>>>>>>> Sure enough, if I comment out the removeAll() I don't get the problem. >>>>>>>> I guess I will file a bug report... >>>>>>>> >>>>>>>> Ian. >>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>> >>>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>> >>>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>> >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>> >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org