[
https://issues.apache.org/jira/browse/WICKET-6137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15862907#comment-15862907
]
Sven Meier commented on WICKET-6137:
------------------------------------
Many thanks for your feedback Pedro:
- IRequestListener#onRequest() fits nicely with AjaxEventBehavior#onEvent() and
AjaxFormSubmitBehavior#onSubmit(), so I don't think #listen() would be an
improvement
- I've tried adding the request as a parameter: only one implementing method
benefited from the argument, all others are not interested in the request object
- #canCallListener() has different arguments for components and behaviors :/.
Furthermore a component can decide whether it wants to allow behaviors to
receive requests, even if it doesn't implement IRequestListener itself. Thus I
don't see how we pull this method into IRequestListener.
> ListenerInterfaceRequestHandler simplification
> ----------------------------------------------
>
> Key: WICKET-6137
> URL: https://issues.apache.org/jira/browse/WICKET-6137
> Project: Wicket
> Issue Type: Improvement
> Components: wicket
> Affects Versions: 8.0.0-M1
> Reporter: Sven Meier
> Assignee: Sven Meier
> Priority: Minor
> Fix For: 8.0.0-M1
>
>
> Branch "request_listener_simplification" contains a proposal to simplify
> ListenerInterfaceRequestHandler.
> By limiting components and behaviors to implement a single callback only, we
> can remove the identifying part "I*Listener" from URLs.
> For page 0, renderCount 1 and behavior 2 the following componentInfos:
> 0-1.ILinkListener-link
> 0-1.ILinkListener.2-link
> 0-IResourceListener-image
> 0-IResourceListener.2-wmc
> ... become:
> 0-1.-link
> 0-1.2-link
> 0--image
> 0-.2-wmc
> This format could be further improved, suggestions are welcomed.
> This has the following advantages:
> - framework exposure in URLs is minimized
> - URLs get shorter
> - no need to register INTERFACE constants any longer
> - instead using of reflection ListenerInterfaceRequestHandler can call a
> single method on the component or behavior, which makes debugging easier.
> - a single interface for components or behavior is enough to be targeted by
> requests:
> {code}
> public interface IRequestListener extends IClusterable
> {
> /**
> * Does invocation of this listener render the page.
> *
> * @return default {@code true}, i.e. a {@link
> RenderPageRequestHandler} is scheduled after invocation
> */
> default boolean rendersPage()
> {
> return true;
> }
>
> /**
> * Called when a request is received.
> */
> void onRequest();
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)