i dont think we can support transparent resolvers as ajax targets -igor
On Fri, Apr 11, 2008 at 10:00 AM, Meetesh Karia <[EMAIL PROTECTED]> wrote: > Hi all, > > We're seeing an issue with ajax and isTransparentResolver set to return > true and I'm wondering if this is something we're doing wrong or if it's an > oversight. Here's an example: > > add(new WebMarkupContainer("toUpdate") { > @Override > public boolean isTransparentResolver() { > return true; > } > }); > > add(new WebMarkupContainer("myChild")); > > with html like this: > > <div wicket:id="toUpdate"> > <div wicket:id="myChild"> > ... > </div> > </div> > > When a user clicks on an ajax link (which is a "child" of toUpdate and > added in the same manner as myChild), toUpdate is added to the target to be > rendered. > > Now, because toUpdate doesn't have any real children, it doesn't mark any > of them as rendering in MarkupContainer.internalMarkRendering(). However, > Component.render(MarkupStream) does mark all of the children as rendering > because it calls markRendering() itself. When the rendering is finished, > MarkupContainer.onAfterRenderChildren() is called but only the toUpdate > container has it's rendering flag set to false and the child rendering flags > remain set to true. If there's now another ajax click within that same > container which modifies the visibility of a component, an exception will be > thrown indicating that a hierarchy change can't occur while rendering. > > Are we using isTransparentResolver() incorrectly? > > Thanks, > Meetesh > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]