wicket-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Grigorov <mgrigo...@apache.org>
Subject Re: ListenerInvocationNotAllowedException question / help
Date Mon, 16 Nov 2015 20:38:05 GMT
Hi Sven,

What I'm saying is that Wicket uses Component#canCallListenerInterface() to
decide whether the listener interface method could be executed or not.
See
https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java#L207

So overriding #onConfigure() won't help him because #onConfigure() is
called later, after successful #onClick().

He needs to override #canCallListenerInterface() if he needs to call
onClick even on invisible/disabled component.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Mon, Nov 16, 2015 at 9:31 PM, Sven Meier <sven@meiers.net> wrote:

> Hi Martin,
>
> I didn't understand your comment.
>
> Do you think Wayne might have overriden #canCallListenerInterface()?
>
> Regards
> Sven
>
>
>
> On 16.11.2015 19:32, Martin Grigorov wrote:
>
>> Hi,
>>
>> Actually org.apache.wicket.Component#canCallListenerInterface() is
>> responsible for the ACTION phase.
>> #onConfigure() is called in the RENDER phase, i.e. after onClick().
>>
>> Martin Grigorov
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>>
>> On Mon, Nov 16, 2015 at 7:27 PM, Sven Meier <sven@meiers.net> wrote:
>>
>> Hi,
>>>
>>> this should work.
>>>
>>> Do you have #isVisible() or #isEnabled() overridden in one of the
>>> component's parents?
>>>
>>> Have fun
>>> Sven
>>>
>>>
>>>
>>> On 16.11.2015 18:08, Wayne W wrote:
>>>
>>> Hi Sven,
>>>>
>>>> I tried overriding :
>>>>
>>>> @Override
>>>>
>>>> protected void onConfigure()
>>>>
>>>> {
>>>>
>>>> setVisible(documentModel.getObject().isLocked());
>>>>
>>>> super.onConfigure();
>>>>
>>>> }
>>>>
>>>>
>>>> and removing the isVisible() override but I still get the same
>>>> exception.
>>>>
>>>>
>>>>
>>>>
>>>> org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedException:
>>>> Component rejected interface invocationComponent: [Link [Component id =
>>>> unlock2]] Listener: [RequestListenerInterface name=ILinkListener,
>>>> method=public abstract void
>>>> org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
>>>>
>>>> at org.apache.wicket.RequestListenerInterface.invoke(
>>>> RequestListenerInterface.java:212)
>>>>
>>>> at
>>>>
>>>>
>>>> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(
>>>> ListenerInterfaceRequestHandler.java:243)
>>>>
>>>> at
>>>>
>>>>
>>>> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(
>>>> ListenerInterfaceRequestHandler.java:236)
>>>>
>>>> at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(
>>>> RequestCycle.java:862)
>>>>
>>>> at org.apache.wicket.request.RequestHandlerStack.execute(
>>>> RequestHandlerStack.java:64)
>>>>
>>>> ....
>>>>
>>>>
>>>>
>>>> any ideas?
>>>>
>>>>
>>>>
>>>> On Mon, Nov 16, 2015 at 4:54 PM, Sven Meier <sven@meiers.net> wrote:
>>>>
>>>> Hi,
>>>>
>>>>>
>>>>> Would it be because wicket is checking boolean isVisible() when
>>>>>
>>>>>> making this decision? (as we override the links isVisible()
>>>>>>
>>>>>>
>>>>> indeed.
>>>>>
>>>>> You should override #onConfigure() and call #setVisible() instead of
>>>>> overriding #isVisible().
>>>>>
>>>>> Regards
>>>>> Sven
>>>>>
>>>>>
>>>>>
>>>>> On 16.11.2015 16:59, Wayne W wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>>>
>>>>>> I have a org.apache.wicket.markup.html.link.Link within a page this
is
>>>>>> visible only if a certain criteria is met.
>>>>>>
>>>>>> If user A visits this page the changes the criteria the link is
>>>>>> visible.
>>>>>> The user can then click on the link for some other functionality.
>>>>>>
>>>>>> However I'm finding is User B (in a different session) visits the
same
>>>>>> page
>>>>>> and changes the criteria so that the link is no longer visible but
the
>>>>>> user
>>>>>> A still has this page open and user A then clicks on the link
>>>>>> a ListenerInvocationNotAllowedException is thrown which I just don't
>>>>>> understand.
>>>>>>
>>>>>> I would get it if user B somehow got the hit the url that represents
>>>>>> that
>>>>>> link, but why does this link component in another session throw the
>>>>>> exception? Would it be because wicket is checking boolean isVisible()
>>>>>> when
>>>>>> making this decision? (as we override the links isVisible() to show
>>>>>> depending on the criteria.
>>>>>>
>>>>>> thanks
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>>
>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>
>>>>>
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message