Hi Martin,
to my knowledge the usual pattern is to override #onConfigure() and set
up the visibility and enabling of the component for the next rendering
*and* the following 'ACTION phase':
http://wicketinaction.com/2011/11/implement-wicket-component-visibility-changes-properly/
Usually I don't see any need to override #canCallListenerInterface(),
except in very special cases. I would not advice to override it
lightheartedly.
From Wayne's description I deduced that he used the 'old' pattern to
override #isVisible(), which leads to
ListenerInvocationNotAllowedException if the condition for visibility
and/or enabling changes between rendering and the next incoming request.
Regards
Sven
On 16.11.2015 21:38, Martin Grigorov wrote:
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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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: [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]