I am not using the same ResourceReference.
getSearchResultsResourcReference() is overridden in subclasses to return a
different resource reference as needed.

Anyway I think now I understand how to mount the resource from within the
component.

Thanks!

On Mon, Dec 15, 2014 at 10:57 PM, Martin Grigorov <[email protected]>
wrote:
>
> 1. Since you use the same ResRef for all autocompleters then you can just
> mount it at start time within MyApp#init().
> 2. Wicket uses ResourceReference#equals() to find the mounted ResRef so you
> can do:
>  - mountResource("/some/path/", new MyResRef())
>  - CharSequence url = RequestCycle.get().urlFor(new MyResRef(), null);
> i.e. two different instances! They are matched by #equals(), not by
> identity
>
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Mon, Dec 15, 2014 at 10:46 PM, mscoon <[email protected]> wrote:
> >
> > Hmm now I'm a bit confused.
> >
> > I have a TextTemplate that generates the JQuery autocomplete javascript.
> I
> > need to pass it the url to retrieve the search results from. So I do:
> >
> > HashMap<String, CharSequence> vars = new HashMap<>();
> > CharSequence url =
> > RequestCycle.get().urlFor(getSearchResultsResourcReference(), null);
> > vars.put("sourceUrl", url);
> > response.render(JavaScriptHeaderItem.forScript(template.asString(vars),
> > jsId);
> >
> > where getSearchResultsResourcReference() creates (and saves in the app
> > metadata) or retrieves the resource reference for searching.
> >
> > So I need a reference to the resource reference every time I use an
> > autocomplete component.
> >
> > Am I missing something? Were you simply suggesting that instead of the
> > resource I store the url in the app metadata? Does it make any
> difference?
> >
> >
> > On Mon, Dec 15, 2014 at 10:36 PM, Martin Grigorov <[email protected]>
> > wrote:
> > >
> > > With proper synchronization - yes.
> > > But I think you won't need to retrieve it later at all. So just make
> sure
> > > it is not added several times
> > >
> > > Martin Grigorov
> > > Wicket Training and Consulting
> > > https://twitter.com/mtgrigorov
> > >
> > > On Mon, Dec 15, 2014 at 10:31 PM, mscoon <[email protected]> wrote:
> > > >
> > > > Thanks Martin for your answer.
> > > >
> > > > Is storing the resource reference in the application metadata once
> it's
> > > > created and retrieving it from the metadata on subsequent uses a safe
> > way
> > > > to create it only once?
> > > >
> > > > On Mon, Dec 15, 2014 at 9:19 AM, Martin Grigorov <
> [email protected]
> > >
> > > > wrote:
> > > > >
> > > > > On Sun, Dec 14, 2014 at 12:08 AM, mscoon <[email protected]> wrote:
> > > > > >
> > > > > > Thank you both for your answers.
> > > > > >
> > > > > > I have reasons to roll my own autocomplete component. But I did
> > take
> > > a
> > > > > look
> > > > > > at the way wiqiery and wicket-jquery are serving the choices.
> > > > > >
> > > > > > As far as I can tell neither is using a stateless/lightweight way
> > for
> > > > > > serving the choices. Both serve them with a request to the page
> > that
> > > > > > contains the autocomplete component. This provides flexibility
> > > (because
> > > > > you
> > > > > > can use the page state to adapt the returned choices) but also
> > sounds
> > > > > quite
> > > > > > expensive.
> > > > > >
> > > > > > Am I going too far here worrying about performance?
> > > > > >
> > > > > > Also, if I wanted to use resources as Andrea suggested, the only
> > way
> > > to
> > > > > > register them is via an initializer or at application start?
> Can't
> > > the
> > > > > > component register them?
> > > > > >
> > > > >
> > > > > Yes.
> > > > > ((WebApplication))component.getApplication()).mountResource(...)
> > > > >
> > > > > But this may register/mount the resource many times - as many as
> this
> > > > > component is used.
> > > > >
> > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Sat, Dec 13, 2014 at 10:33 PM, Martin Grigorov <
> > > > [email protected]>
> > > > > > wrote:
> > > > > > >
> > > > > > > Hi,
> > > > > > >
> > > > > > > There are few very good integrations between Wicket and JQuery
> > UI.
> > > > > > > Check https://github.com/sebfz1/wicket-jquery-ui and
> > > > > > > https://github.com/WiQuery/wiquery
> > > > > > > Both of them provide autocomplete component.
> > > > > > >
> > > > > > > Martin Grigorov
> > > > > > > Wicket Training and Consulting
> > > > > > > https://twitter.com/mtgrigorov
> > > > > > >
> > > > > > > On Sat, Dec 13, 2014 at 7:50 PM, Andrea Del Bene <
> > > > [email protected]
> > > > > >
> > > > > > > wrote:
> > > > > > > >
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > I suggest you to use a resource instead of an adapted
> stateless
> > > > page.
> > > > > > > > Wicketstuff has a module with special Wicket resources to
> > > implement
> > > > > > REST
> > > > > > > > api: https://github.com/wicketstuff/core/tree/master/
> > > > > > > > jdk-1.7-parent/wicketstuff-restannotations-parent. Here you
> can
> > > > find
> > > > > > > > resources that already produce JSON in output.
> > > > > > > > To configure them you might use a Wicket initializer:
> > > > > > > > http://wicket.apache.org/guide/guide/single.html#advanced_3
> > > > > > > >
> > > > > > > >  Hi all,
> > > > > > > >>
> > > > > > > >> I am making an autocomplete component based on
> > > > jquery-autocomplete.
> > > > > > > >>
> > > > > > > >> I have currently implemented the data source using a
> stateless
> > > web
> > > > > > page
> > > > > > > >> which writes the json response.
> > > > > > > >>
> > > > > > > >> What I don't like about this is that it is a separate
> > file/class
> > > > > from
> > > > > > my
> > > > > > > >> autocomplete component. But I like that it's stateless.
> > > > > > > >>
> > > > > > > >> Could I achieve the same effect (statelessness) using a
> > dynamic
> > > > > > resource
> > > > > > > >> registered/created from within the autocomplete component?
> In
> > > > other
> > > > > > > words
> > > > > > > >> I
> > > > > > > >> want the autocomplete component, upon creation, to register
> a
> > > > > resource
> > > > > > > >> that
> > > > > > > >> can be used to serve the autocomplete options. But I want
> the
> > > > > resource
> > > > > > > to
> > > > > > > >> be stateless and lightweight and the requests to return the
> > > > > > autocomplete
> > > > > > > >> options should not have to go through the page that contains
> > the
> > > > > > > >> autocomplete component.
> > > > > > > >>
> > > > > > > >> Furthermore, if I have the same autocomplete component twice
> > in
> > > a
> > > > > > page,
> > > > > > > >> the
> > > > > > > >> resource should be registered only once and server requests
> > for
> > > > both
> > > > > > > >> components.
> > > > > > > >>
> > > > > > > >> Is this possible? Can you provide some guidelines?
> > > > > > > >>
> > > > > > > >> Thanks
> > > > > > > >> Marios
> > > > > > > >>
> > > > > > > >>
> > > > > > > >
> > > > > > > >
> > > > ---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail: [email protected]
> > > > > > > > For additional commands, e-mail:
> [email protected]
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to