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

Reply via email to