Thats the point. It is not used within a Component / Behavior - so I cant use getPage() ...
> Am 09.09.2014 um 14:50 schrieb Martin Grigorov <mgrigo...@apache.org>: > > The UrlGenerator class is used somewhere where the Page is available, no ? > In SomeComponent/SomeBehavior: > > UrlGenerator generator = new UrlGenerator(); > Url url = generator.generate(getPage().getPageId()); > > Session.get().getPageManager().getPage(exisingAndNonExpiredPageId) is the > way to get a reference to the page. > Wicket uses this API internally every time you click a link or button. > > Martin Grigorov > Wicket Training and Consulting > https://twitter.com/mtgrigorov > > > On Tue, Sep 9, 2014 at 3:45 PM, Tobias Soloschenko < > tobiassolosche...@googlemail.com> wrote: > >> And thats the question I was looking for - how do I get the current page id >> within the class that generates the url which is no component and the >> second question was how do I get the page to that id, because (Page) >> WebSession.get().getPageManager().getPage(i.get()) returns null for int i >> 0-10, event if I cleared the browsers cache / restarted the server. >> >> kind regards and big thanks for all the help! >> >> Tobias >> >> 2014-09-09 14:28 GMT+02:00 Martin Grigorov <mgrigo...@apache.org>: >> >>> Session#pageId is a counter that is used to give an id to the next >> created >>> page. >>> It is not the id of the currently used page! >>> >>> You will need to provide the pageId somehow to the class that generates >> the >>> url. >>> >>> Martin Grigorov >>> Wicket Training and Consulting >>> https://twitter.com/mtgrigorov >>> >>> >>> On Tue, Sep 9, 2014 at 3:13 PM, Tobias Soloschenko < >>> tobiassolosche...@googlemail.com> wrote: >>> >>>> The method getPage() is not available at the place where I'm building >> the >>>> link - I'm not within a component and I try to get the page by content >> of >>>> the session. :-) >>>> >>>> I didn't modified the Session - the pageId is stored in >>>> org.apache.wicket.Session.pageId which is an AtomicInteger >>>> >>>> >>>> 2014-09-09 14:06 GMT+02:00 Martin Grigorov <mgrigo...@apache.org>: >>>> >>>>> Pass the pageId as a query string parameter. >>>>> >>>>> PageParameters params = new PageParameters(); >>>>> params.set("pageId", getPage().getPageId()); >>>>> theUrlToTheReference = requestCycle.urlFor(yourResRef, params); >>>>> >>>>> Then in the IResource (better extend AbstractResource) just read it >>> from >>>>> the request parameters. >>>>> >>>>> Storing the pageId in the session is not OK because the user may open >>> two >>>>> different pages in separate tabs/windows and this will break. >>>>> >>>>> >>>>> Martin Grigorov >>>>> Wicket Training and Consulting >>>>> https://twitter.com/mtgrigorov >>>>> >>>>> >>>>> On Tue, Sep 9, 2014 at 3:01 PM, Tobias Soloschenko < >>>>> tobiassolosche...@googlemail.com> wrote: >>>>> >>>>>> Thanks again for the fast answer. My code now looks this way: >>>>>> >>>>>> Field declaredField = >>>>>> WebSession.get().getClass().getSuperclass() >>>>>> .getDeclaredField("pageId"); >>>>>> >>>>>> declaredField.setAccessible(true); >>>>>> AtomicInteger i = (AtomicInteger) >>>>>> declaredField.get(WebSession.get()); >>>>>> Page page = (Page) WebSession.get().getPageManager() >>>>>> .getPage(i.get()); >>>>>> >>>>>> AjaxRequestTarget newAjaxRequestTarget = >>> ((WebApplication) >>>>>> Application.get()) >>>>>> .newAjaxRequestTarget(page); >>>>>> >>>>>> RequestCycle.get().scheduleRequestHandlerAfterCurrent( >>>>>> newAjaxRequestTarget); >>>>>> >>>>>> I dont know how to get the current pageId but from the Session. The >>>> page >>>>> at >>>>>> this place is null. :-( >>>>>> >>>>>> >>>>>> >>>>>> 2014-09-09 13:53 GMT+02:00 Martin Grigorov <mgrigo...@apache.org>: >>>>>> >>>>>>> On Tue, Sep 9, 2014 at 2:05 PM, Tobias Soloschenko < >>>>>>> tobiassolosche...@googlemail.com> wrote: >>>>>>> >>>>>>>> Hi again, >>>>>>>> >>>>>>>> I tried out that code you mentioned here. >>>>>>>> WebSession.get().getPageManager().getPage(int i) returns >>>>>> IManageablePage >>>>>>>> which is not applicable as argument for newAjaxRequestTarget. >>>>>>> >>>>>>> cast it >>>>>>> it is known that in your environment you don't use any custom >>>>>>> IManageablePage/IRequestablePage impls (see IPageFactory) >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> The second thing is how do I get the instance of a page by >> class >>>> with >>>>>> the >>>>>>>> last page id not from within a component (this would be simple >>>>>>> getPage())? >>>>>>> >>>>>>> I didn't get this >>>>>>> Please re-phrase >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> 2014-09-09 11:51 GMT+02:00 Martin Grigorov < >> mgrigo...@apache.org >>>> : >>>>>>>> >>>>>>>>> I've re-read the message and I think I got it. >>>>>>>>> What you really need is a mounted resource >>>>>>>>> (WebApplication#mountResource(someResourceReference)) >>>>>>>>> To get a url to it use: theUrl = >>> requestCycle.urlFor(sameResRef, >>>>>>>>> parametersWithPageId) >>>>>>>>> Wicket.Ajax.get({"u": theUrl, ...}) >>>>>>>>> In IResource#respond() you can create AjaxRequestTarget with: >>>>>>>>> >>>>>>>>> Page page = >>>> session.getPageManager().get(parameters.get("pageId")) >>>>>>>>> target = webApplication.newAjaxRequestTarget(page) >>>>>>>>> requestCycle.scheduleRequestHandlerAfterCurrent(target); >>>>>>>>> page.send(page, Broadcast.BREADTH, new SomeEvent(target)) >>>>>>>>> >>>>>>>>> in SomeComponent#onEvent() use >> someEvent.getTarget().add(this) >>> to >>>>> add >>>>>>> the >>>>>>>>> component when SomeEvent is broadcasted >>>>>>>>> >>>>>>>>> Martin Grigorov >>>>>>>>> Wicket Training and Consulting >>>>>>>>> https://twitter.com/mtgrigorov >>>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, Sep 9, 2014 at 12:40 PM, Richter, Marvin < >>>>>>>>> marvin.rich...@freenetdigital.com> wrote: >>>>>>>>> >>>>>>>>>> What you are looking for is the Wicket Event mechanism. >>>>>>>>>> >>>>>>>>>> This allows you to send a broadcast to a specified >> Component >>>>> (e.g. >>>>>>> the >>>>>>>>>> current page) and a payload (e.g. your custom event type >>> which >>>>>>> contains >>>>>>>>>> information). >>>>>>>>>> >>>>>>>>>> In the Components which should react on the event you >>> override >>>>> the >>>>>>>> method >>>>>>>>>> onEvent, check if the event is of your type and if so, do >>> with >>>>> the >>>>>>>> event >>>>>>>>>> payload whatever you want. >>>>>>>>>> >>>>>>>>>> Check out >> http://www.wicket-library.com/wicket-examples/events/wicket/bookmarkable/org.apache.wicket.examples.source.SourcesPage?1&SourcesPage_class=org.apache.wicket.examples.events.DecoupledAjaxUpdatePage >>>>>>>>>> for a good example. >>>>>>>>>> >>>>>>>>>> Best, >>>>>>>>>> Marvin >>>>>>>>>> >>>>>>>>>> -----Original Message----- >>>>>>>>>> From: Tobias Soloschenko [mailto: >>>>> tobiassolosche...@googlemail.com] >>>>>>>>>> Sent: Tuesday, September 09, 2014 11:31 AM >>>>>>>>>> To: users@wicket.apache.org >>>>>>>>>> Subject: Re: Global Ajax Event Handler >>>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> thanks for the answer, but this is only a client side event >>>> hook >>>>>> not >>>>>>>> for >>>>>>>>>> processing a request to the Server. I added a pseudo code >> to >>>> the >>>>>>>> question >>>>>>>>>> of martin who asked me what I exactly want to do. >>>>>>>>>> >>>>>>>>>> Thanks anyway for the fast answer! >>>>>>>>>> >>>>>>>>>> kind regards, >>>>>>>>>> >>>>>>>>>> Tobias >>>>>>>>>> >>>>>>>>>>> Am 09.09.2014 um 11:06 schrieb Tom Götz <t...@decoded.de >>> : >>>>>>>>>>> >>>>>>>>>>> See >>>>>> https://cwiki.apache.org/confluence/display/WICKET/Wicket+Ajax >>>>>>> , >>>>>>>>>> section "Global Ajax call listeners“. >>>>>>>>>>> >>>>>>>>>>> Cheers, >>>>>>>>>>> -Tom >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> On 09.09.2014, at 10:58, Tobias Soloschenko < >>>>>>>>>> tobiassolosche...@googlemail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>> Hi all, >>>>>>>>>>>> >>>>>>>>>>>> is there a way to register a global ajax event handler >>>> within >>>>>>>> Wicket? >>>>>>>>>> For normal there is the AbstractDefaultAjaxBehavior which >> is >>>>> added >>>>>>> to a >>>>>>>>>> component. And then the CallbackScript can be obtained and >>> used >>>>>>> within >>>>>>>> a >>>>>>>>>> OnDomReadyHeaderItem for example. >>>>>>>>>>>> >>>>>>>>>>>> Is there a way to do this on application level so that >> Im >>>> able >>>>>> to >>>>>>>> get >>>>>>>>>> the CallbackScript from the instantiated Application? >>>>>>>>>>>> >>>>>>>>>>>> kind regards >>>>>>>>>>>> >>>>>>>>>>>> Tobias >>>> --------------------------------------------------------------------- >>>>>>>>>>>> To unsubscribe, e-mail: >>> users-unsubscr...@wicket.apache.org >>>>>>>>>>>> For additional commands, e-mail: >>>> users-h...@wicket.apache.org >> --------------------------------------------------------------------- >>>>>>>>>> To unsubscribe, e-mail: >> users-unsubscr...@wicket.apache.org >>>>>>>>>> For additional commands, e-mail: >>> users-h...@wicket.apache.org >> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org