BTW I've logged bug 2438. On Thu, Aug 27, 2009 at 5:01 PM, Ian MacLarty<[email protected]> wrote: > 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<[email protected]> 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<[email protected]> 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<[email protected]> >>> 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<[email protected]> >>>> 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<[email protected]> >>>>> wrote: >>>>>> what do these links do? >>>>>> >>>>>> -igor >>>>>> >>>>>> On Wed, Aug 26, 2009 at 9:51 PM, Ian MacLarty<[email protected]> >>>>>> 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<[email protected]> >>>>>>> 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<[email protected]> >>>>>>>> wrote: >>>>>>>>> On Thu, Aug 27, 2009 at 2:09 PM, Ian MacLarty<[email protected]> >>>>>>>>> wrote: >>>>>>>>>> On Thu, Aug 27, 2009 at 1:41 PM, Ian >>>>>>>>>> MacLarty<[email protected]> 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: [email protected] >>>>>>>>> For additional commands, e-mail: [email protected] >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>> To unsubscribe, e-mail: [email protected] >>>>>>>> For additional commands, e-mail: [email protected] >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: [email protected] >>>>>>> For additional commands, e-mail: [email protected] >>>>>>> >>>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: [email protected] >>>>>> For additional commands, e-mail: [email protected] >>>>>> >>>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [email protected] >>>>> For additional commands, e-mail: [email protected] >>>>> >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> >
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
