Hi! EnclosureResolver....container.autoAdd is invoked at render phase? Would it be necessary to hook into a different event (instead of onBeforeRender) or could it be pre-sniffed at onBeforeRender?
** Martin 2011/1/21 Joo Hama <[email protected]>: > I tested this idea by adding the code below to my web application > object. Problem was though, > that when viewing the variables in debugger, the enclosure object didn't > seem to be included in > the tree of the parent objects. It was as if the enclosure was invisible to > them. Perhaps because > Enclosure is a transparent resolver? > > object tree in my application: > > - page > - enclosure > - div (the parent of this was shown to be page, not the enclosure) > > > Code: > //----------------------------- > @Override public AjaxRequestTarget newAjaxRequestTarget(Page page) { > AjaxRequestTarget target = super.newAjaxRequestTarget(page); > target.addListener(new AjaxRequestTarget.IListener() { public void > onBeforeRespond(Map<String, Component> map, AjaxRequestTarget target) { > for(Component component : map.values()) { Enclosure parentEnclosure = > component.findParent(Enclosure.class); if (parentEnclosure != null) { > Enclosure topParent = new Enclosure("DUMMY", "DUMMY"); while (topParent != > null) { topParent = parentEnclosure.findParent(Enclosure.class); if > (topParent != null) { parentEnclosure = topParent; } } > target.addComponent(parentEnclosure); } } } public void > onAfterRespond(Map<String, Component> map, IJavascriptResponse response) {} > }); return target; }; > //----------------------- > > > On Fri, Jan 21, 2011 at 3:07 AM, Jeremy Thomerson <[email protected] >> wrote: > >> On Thu, Jan 20, 2011 at 1:51 PM, Igor Vaynberg <[email protected] >> >wrote: >> >> > interesting idea. i think this would require a bit of a trick. >> > >> > a) modify enclosure tag handler to accept an attribute instead of a tag >> > b) modify enclosure tag handler to add a bit of metadata to the >> > component marking that it belongs to an enclosure >> > c) add a ajaxrequesttarget.listener to the request target that checks >> > for this bit of metadata and adds the enclosure container to the ajax >> > request target. >> > >> > not sure how feasible this all is because the enclosure container is >> > an auto component. but, you are welcome to tinker around. >> > >> > -igor >> >> >> I, too, like the idea. Couldn't it be simpler? Couldn't he: >> >> 1: Override newAjaxRequestTarget in WebApplication >> 2: When he creates an ART, add a listener to it. >> 3: In the listener, in onBeforeRespond, do this: >> >> for(Component component : map.values()) { >> Enclosure parentEnclosure = component.findParent(Enclosure.class); >> while (parentEnclosure != null) { >> Enclosure topParent = parentEnclosure.findParent(Enclosure.class); >> if (topParent != null) { >> parentEnclosure = topParent; >> } >> } >> if (parentEnclosure != null) { >> addComponent(parentEnclosure); >> } >> } >> >> >> >> -- >> Jeremy Thomerson >> http://wickettraining.com >> *Need a CMS for Wicket? Use Brix! http://brixcms.org* >> >
