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]

Reply via email to