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
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to