Sorry, but for me all these solutions are hacks :).
I want to use standard components (eg. AjaxLink) to do simple things.
I don't want to think everywhere how to handle such scenarios. It
should be handled properly on a framework level. I think there is
always possibility that component state on server and DOM tree on
client browser are inconsistent (and not necessary because of push
requests). Maybe it should be a dedicated exception on such situation
("Component 'xxx' has been removed from page.") at least or maybe we
can invent a better solution in core?

--
Daniel

On Fri, Jul 4, 2014 at 4:11 PM, Ernesto Reinaldo Barreiro
<[email protected]> wrote:
> Maybe you could even just push JSON to client side and generate items
> content at client side which is going to be way faster
>
>
> On Fri, Jul 4, 2014 at 4:06 PM, Ernesto Reinaldo Barreiro <
> [email protected]> wrote:
>
>> Why don't you try routing all the click to a part of you application that
>> is always available? E.g.
>>
>> 1- You have a list of items that are pushed... They are in a certain
>> container that is "always" there... At client and server side
>> 2- The items are pushed but instead of normal AJAX link you use link to
>> the parent never changing container passing ID of item. This way click will
>> never fail and it is still sort of object oriented...
>>
>>
>>
>> On Fri, Jul 4, 2014 at 3:59 PM, Daniel Stoch <[email protected]>
>> wrote:
>>
>>> On Fri, Jul 4, 2014 at 3:14 PM, Martin Grigorov <[email protected]>
>>> wrote:
>>> > Hi,
>>> >
>>> > You can use Atmopshere to hide/disable the client side too, not just the
>>> > server side.
>>>
>>> Of course, I already do that.
>>> But user can click the link after state was changed on the server side
>>> but before these changes are pushed to client browser.
>>>
>>> --
>>> Daniel
>>>
>>>
>>> >
>>> > Martin Grigorov
>>> > Wicket Training and Consulting
>>> > https://twitter.com/mtgrigorov
>>> >
>>> >
>>> > On Fri, Jul 4, 2014 at 1:46 PM, Daniel Stoch <[email protected]>
>>> wrote:
>>> >
>>> >> On Fri, Jul 4, 2014 at 12:33 PM, Sven Meier <[email protected]> wrote:
>>> >> >> So page was rendered in a browser,
>>> >> >> on the server component tree was changed
>>> >> >
>>> >> >
>>> >> > What triggers the change to the component tree? On which thread? Are
>>> you
>>> >> > using websockets?
>>> >> >
>>> >> > Sven
>>> >>
>>> >> In general this thread is not initialized by user action but by
>>> >> application. So yes, it can be push from a server (eg. using
>>> >> Atmosphere - this is my case) or by ajax self updating behavior.
>>> >>
>>> >> --
>>> >> DS
>>> >>
>>> >> >
>>> >> >
>>> >> >
>>> >> > On 07/04/2014 12:13 PM, Daniel Stoch wrote:
>>> >> >>
>>> >> >> Hi all,
>>> >> >>
>>> >> >> I think such question occurs from time to time on this list, but I
>>> >> >> have never found a good answer how to solve such problem in general.
>>> >> >> The problem is similar to my last question:
>>> >> >>
>>> >> >>
>>> >>
>>> http://apache-wicket.1842946.n4.nabble.com/How-to-handle-click-on-disabled-links-ListenerInvocationNotAllowedException-td4666287.html
>>> >> >> but now there is a situation when link was removed from page (not
>>> >> >> disabled).
>>> >> >>
>>> >> >> So page was rendered in a browser, on the server component tree was
>>> >> >> changed, but user clicks a link in a browser before this changes
>>> will
>>> >> >> be pushed to it. It leads to an exception:
>>> >> >>
>>> >> >> org.apache.wicket.WicketRuntimeException: Component 'xxx' has been
>>> >> >> removed from page.
>>> >> >> at
>>> >> >>
>>> >>
>>> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:178)
>>> >> >> at
>>> >> >>
>>> >>
>>> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:862)
>>> >> >> at
>>> >> >>
>>> >>
>>> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
>>> >> >> at
>>> >> >>
>>> >>
>>> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
>>> >> >> at
>>> >> >>
>>> >>
>>> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
>>> >> >> at
>>> >> >>
>>> >>
>>> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
>>> >> >> at
>>> >> >>
>>> >>
>>> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
>>> >> >> at
>>> >> >>
>>> >>
>>> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
>>> >> >> at
>>> >> >>
>>> >>
>>> org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:137)
>>> >> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
>>> >> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>>> >> >>
>>> >> >> How it should be properly handled in application? Unfortunately this
>>> >> >> is not a dedicated exception to catch somewhere, but a common
>>> >> >> WicketRuntimeException.
>>> >> >>
>>> >> >> --
>>> >> >> Best regards,
>>> >> >> Daniel
>>> >> >>
>>> >> >>
>>> ---------------------------------------------------------------------
>>> >> >> 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]
>>>
>>>
>>
>>
>> --
>> Regards - Ernesto Reinaldo Barreiro
>>
>
>
>
> --
> Regards - Ernesto Reinaldo Barreiro

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to