You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Gerolf Seitz (JIRA)" <ji...@apache.org> on 2007/10/23 01:35:50 UTC

[jira] Created: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)
--------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: WICKET-1095
                 URL: https://issues.apache.org/jira/browse/WICKET-1095
             Project: Wicket
          Issue Type: Bug
    Affects Versions: 1.3.0-beta4
            Reporter: Gerolf Seitz
             Fix For: 1.3.0-beta5


the code involved can be found at http://papernapkin.org/pastebin/view/13287

if a transparent (= isTransparentResolver() {return true;}) markupContainer is set to invisible, the component's markup is skipped (markupStream.skipComponent() in Component.java line 2319).
if the parent containing the transparent markupContainer is added to the ajax request target and there is a component (in this case a button) "inside" the transparent markupcontainer's markup but is actually a child of the transparent markupcontainer's parent, the button is never actually rendered (due to skipping the markup of the transparent webmarkupcontainer) but is still visibleInHierarchy (see Page.java line 1005), because the invisible transparent markupcontainer is not a parent of the button.

the ultimate question is: what is the desired behavior for an invisible transparentResolver? render it's "children" or not?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Re: [jira] Created: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by Gerolf Seitz <ge...@gmail.com>.
false alarm. it's just a normal <div> tag. messed it up with something
else...

On 10/24/07, Gerolf Seitz <ge...@gmail.com> wrote:
>
> hm, what i failed to explicitly mention is that the transparent resolver's
> markup is a wicket:container.
> maybe this information is of value...
>
>   Gerolf
>
> On 10/24/07, Gerolf Seitz <ge...@gmail.com> wrote:
> >
> > On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
> > >
> > > is there a test case that fails? (the result should be not rendered
> > > but it
> > > does render a bit?)
> >
> >
> > no, unfortunately, there's not (yet).
> >
> > then i can look into it a bit more, i haven't seen much of the
> > > transparent
> > > resolver code.
> > >
> > But are you saying that somebody is setting the transparent resolver to
> > > none
> > > visible?
> >
> >
> > exactly.
> >
> > And what component is then inserted to be rerendered for the ajax
> > > request?
> >
> >
> > the panel, which is the parent of the (invisible) transparent resolver,
> > which contains the markup for the (visible) button
> >
> > Why does isVisibleInHierarchy not work? The transparent resolver is
> > > still a
> > > parent right?
> >
> >
> > nope, the transparent resolver is not in the hierarchy of the visible
> > button, which is probably the root problem of it all ;)
> >
> > johan
> >
> >
> > Gerolf
> >
> >
> > On 10/24/07, Gerolf Seitz < gerolf.seitz@gmail.com> wrote:
> > > >
> > > > the transparent resolver is set to non visible in the onClick
> > > handler of
> > > > an
> > > > AjaxButton.
> > > > ParentResolver is not involved at all.
> > > >
> > > > the problem is, that the transparent resolver is not found in the
> > > > hierarchy
> > > > of the button,
> > > > and thus it's not possible to use Component#isVisibleInHierarchy in
> > > > Component.java:2245
> > > >
> > > > changing the code you mentioned (rather in MarkupContainer than in
> > > > ParentResolver) doesn't help at all,
> > > > because this code is in renderComponentTagBody, which is called in
> > > > MarkupContainer#onComponentTagBody.
> > > > BUT, MarkupContainer#onComponentTagBody is not called, because the
> > > > transparent is not visible (check in Component.java:2245).
> > > >
> > > > tbh, i'm out of ideas on this one :(
> > > >
> > > >
> > > > On 10/24/07, Johan Compagner < jcompagner@gmail.com > wrote:
> > > > >
> > > > > When do you set a transparent resolver to none visible?
> > > > > I also think if 1 parent (transparent resolver or not) is
> > > invisible then
> > > > > the
> > > > > childs shouldn't be rendered.
> > > > >
> > > > > Because why else would you set it to not visible?
> > > > >
> > > > > But i haven't looked deeply into the resolver stuff But isn't it
> > > fixable
> > > > > here:
> > > > >
> > > > >
> > > > > MarkupContainer parent = container;
> > > > > while ((parent != null) && (parent.isTransparentResolver()))
> > > > > {
> > > > > // Try to find the component with the parent component.
> > > > > parent = parent.getParent();
> > > > > if (parent != null)
> > > > > {
> > > > > Component component = parent.get(tag.getId());
> > > > > if (component != null)
> > > > > {
> > > > > component.render (markupStream);
> > > > > return true;
> > > > > }
> > > > > }
> > > > > }
> > > > > in the ParentResolver class?
> > > > > So an extra check in that loop if the parent is visible?
> > > > >
> > > > > johan
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > On 10/23/07, Gerolf Seitz < gerolf.seitz@gmail.com > wrote:
> > > > > >
> > > > > > anybody with more insight into transparentResolvers (matej,
> > > igor?):
> > > > > >
> > > > > > what is the desired behavior for invisible transparentResolvers?
> > > > > > it's really undefined right now, as the resolver is not
> > > rendered, but
> > > > > the
> > > > > > "children" _are_ (though without markup).
> > > > > >
> > > > > > if "children" of an invisible transparentResolver should be
> > > rendered,
> > > > i
> > > > > > may
> > > > > > have an easy fix for this in Component#render(MarkupStream):
> > > > > > instead of
> > > > > > if (isRenderAllowed() && isVisible()) ....
> > > > > > we could do
> > > > > > if (isRenderAllowed() &&
> > > > > >                (isVisible() || (this instanceof MarkupContainer
> > > &&
> > > > > > ((MarkupContainer)this).isTransparentResolver())))
> > > > > >
> > > > > > nevertheless i think that the expected behavior of setting a
> > > > > > transparentResolver to invisible is that it's "children" are not
> > >
> > > > > rendered.
> > > > >
> > > > >
> > > > >
> > > > > Gerolf
> > > > > >
> > > > > > On 10/23/07, Gerolf Seitz (JIRA) < jira@apache.org> wrote:
> > > > > > >
> > > > > > > invisible TransparentResolver skips markup of visible children
> > > and
> > > > > thus
> > > > > > > resulting in an exception in Page#checkRendering (component
> > > not
> > > > found
> > > > > in
> > > > > > > markup)
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > > --------------------------------------------------------------------------------------------------------------------------------------------------------
> > >
> > > > >
> > > > > > >
> > > > > > >                  Key: WICKET-1095
> > > > > > >                  URL:
> > > > > https://issues.apache.org/jira/browse/WICKET-1095
> > > > > > >              Project: Wicket
> > > > > > >           Issue Type: Bug
> > > > > > >     Affects Versions: 1.3.0-beta4
> > > > > > >             Reporter: Gerolf Seitz
> > > > > > >              Fix For: 1.3.0-beta5
> > > > > > >
> > > > > > >
> > > > > > > the code involved can be found at
> > > > > > > http://papernapkin.org/pastebin/view/13287
> > > > > > >
> > > > > > > if a transparent (= isTransparentResolver() {return true;})
> > > > > > > markupContainer is set to invisible, the component's markup is
> > >
> > > > skipped
> > > > > (
> > > > > > > markupStream.skipComponent() in Component.java line 2319).
> > > > > > > if the parent containing the transparent markupContainer is
> > > added to
> > > > > the
> > > > > > > ajax request target and there is a component (in this case a
> > > button)
> > > > > > > "inside" the transparent markupcontainer's markup but is
> > > actually a
> > > > > > child of
> > > > > > > the transparent markupcontainer's parent, the button is never
> > > > actually
> > > > > > > rendered (due to skipping the markup of the transparent
> > > > > > webmarkupcontainer)
> > > > > > > but is still visibleInHierarchy (see Page.java line 1005),
> > > because
> > > > the
> > > > > > > invisible transparent markupcontainer is not a parent of the
> > > button.
> > > > > > >
> > > > > > > the ultimate question is: what is the desired behavior for an
> > > > > invisible
> > > > > > > transparentResolver? render it's "children" or not?
> > > > > > >
> > > > > > > --
> > > > > > > This message is automatically generated by JIRA.
> > > > > > > -
> > > > > > > You can reply to this email to add a comment to the issue
> > > online.
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> >
>

Re: [jira] Created: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by Gerolf Seitz <ge...@gmail.com>.
hm, what i failed to explicitly mention is that the transparent resolver's
markup is a wicket:container.
maybe this information is of value...

  Gerolf

On 10/24/07, Gerolf Seitz <ge...@gmail.com> wrote:
>
> On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
> >
> > is there a test case that fails? (the result should be not rendered but
> > it
> > does render a bit?)
>
>
> no, unfortunately, there's not (yet).
>
> then i can look into it a bit more, i haven't seen much of the transparent
> > resolver code.
> >
> But are you saying that somebody is setting the transparent resolver to
> > none
> > visible?
>
>
> exactly.
>
> And what component is then inserted to be rerendered for the ajax request?
>
>
> the panel, which is the parent of the (invisible) transparent resolver,
> which contains the markup for the (visible) button
>
> Why does isVisibleInHierarchy not work? The transparent resolver is still
> > a
> > parent right?
>
>
> nope, the transparent resolver is not in the hierarchy of the visible
> button, which is probably the root problem of it all ;)
>
> johan
>
>
> Gerolf
>
>
> On 10/24/07, Gerolf Seitz < gerolf.seitz@gmail.com> wrote:
> > >
> > > the transparent resolver is set to non visible in the onClick handler
> > of
> > > an
> > > AjaxButton.
> > > ParentResolver is not involved at all.
> > >
> > > the problem is, that the transparent resolver is not found in the
> > > hierarchy
> > > of the button,
> > > and thus it's not possible to use Component#isVisibleInHierarchy in
> > > Component.java:2245
> > >
> > > changing the code you mentioned (rather in MarkupContainer than in
> > > ParentResolver) doesn't help at all,
> > > because this code is in renderComponentTagBody, which is called in
> > > MarkupContainer#onComponentTagBody.
> > > BUT, MarkupContainer#onComponentTagBody is not called, because the
> > > transparent is not visible (check in Component.java:2245).
> > >
> > > tbh, i'm out of ideas on this one :(
> > >
> > >
> > > On 10/24/07, Johan Compagner < jcompagner@gmail.com > wrote:
> > > >
> > > > When do you set a transparent resolver to none visible?
> > > > I also think if 1 parent (transparent resolver or not) is invisible
> > then
> > > > the
> > > > childs shouldn't be rendered.
> > > >
> > > > Because why else would you set it to not visible?
> > > >
> > > > But i haven't looked deeply into the resolver stuff But isn't it
> > fixable
> > > > here:
> > > >
> > > >
> > > > MarkupContainer parent = container;
> > > > while ((parent != null) && (parent.isTransparentResolver()))
> > > > {
> > > > // Try to find the component with the parent component.
> > > > parent = parent.getParent();
> > > > if (parent != null)
> > > > {
> > > > Component component = parent.get(tag.getId());
> > > > if (component != null)
> > > > {
> > > > component.render (markupStream);
> > > > return true;
> > > > }
> > > > }
> > > > }
> > > > in the ParentResolver class?
> > > > So an extra check in that loop if the parent is visible?
> > > >
> > > > johan
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > On 10/23/07, Gerolf Seitz < gerolf.seitz@gmail.com > wrote:
> > > > >
> > > > > anybody with more insight into transparentResolvers (matej,
> > igor?):
> > > > >
> > > > > what is the desired behavior for invisible transparentResolvers?
> > > > > it's really undefined right now, as the resolver is not rendered,
> > but
> > > > the
> > > > > "children" _are_ (though without markup).
> > > > >
> > > > > if "children" of an invisible transparentResolver should be
> > rendered,
> > > i
> > > > > may
> > > > > have an easy fix for this in Component#render(MarkupStream):
> > > > > instead of
> > > > > if (isRenderAllowed() && isVisible()) ....
> > > > > we could do
> > > > > if (isRenderAllowed() &&
> > > > >                (isVisible() || (this instanceof MarkupContainer &&
> >
> > > > > ((MarkupContainer)this).isTransparentResolver())))
> > > > >
> > > > > nevertheless i think that the expected behavior of setting a
> > > > > transparentResolver to invisible is that it's "children" are not
> > > > rendered.
> > > >
> > > >
> > > >
> > > > Gerolf
> > > > >
> > > > > On 10/23/07, Gerolf Seitz (JIRA) < jira@apache.org> wrote:
> > > > > >
> > > > > > invisible TransparentResolver skips markup of visible children
> > and
> > > > thus
> > > > > > resulting in an exception in Page#checkRendering (component not
> > > found
> > > > in
> > > > > > markup)
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > --------------------------------------------------------------------------------------------------------------------------------------------------------
> >
> > > >
> > > > > >
> > > > > >                  Key: WICKET-1095
> > > > > >                  URL:
> > > > https://issues.apache.org/jira/browse/WICKET-1095
> > > > > >              Project: Wicket
> > > > > >           Issue Type: Bug
> > > > > >     Affects Versions: 1.3.0-beta4
> > > > > >             Reporter: Gerolf Seitz
> > > > > >              Fix For: 1.3.0-beta5
> > > > > >
> > > > > >
> > > > > > the code involved can be found at
> > > > > > http://papernapkin.org/pastebin/view/13287
> > > > > >
> > > > > > if a transparent (= isTransparentResolver() {return true;})
> > > > > > markupContainer is set to invisible, the component's markup is
> > > skipped
> > > > (
> > > > > > markupStream.skipComponent() in Component.java line 2319).
> > > > > > if the parent containing the transparent markupContainer is
> > added to
> > > > the
> > > > > > ajax request target and there is a component (in this case a
> > button)
> > > > > > "inside" the transparent markupcontainer's markup but is
> > actually a
> > > > > child of
> > > > > > the transparent markupcontainer's parent, the button is never
> > > actually
> > > > > > rendered (due to skipping the markup of the transparent
> > > > > webmarkupcontainer)
> > > > > > but is still visibleInHierarchy (see Page.java line 1005),
> > because
> > > the
> > > > > > invisible transparent markupcontainer is not a parent of the
> > button.
> > > > > >
> > > > > > the ultimate question is: what is the desired behavior for an
> > > > invisible
> > > > > > transparentResolver? render it's "children" or not?
> > > > > >
> > > > > > --
> > > > > > This message is automatically generated by JIRA.
> > > > > > -
> > > > > > You can reply to this email to add a comment to the issue
> > online.
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
>

Re: [jira] Created: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by Gerolf Seitz <ge...@gmail.com>.
the code is attached to the jira issue

On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
>
> I have to see the code first i think.
>
> Because if the button is not in the hierachy of the transparant container
> you could argue that the button needs to be visible. Because what is
> invisible?"
>
> johan
>
>
>
> On 10/24/07, Gerolf Seitz <ge...@gmail.com> wrote:
> >
> > On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
> > >
> > > is there a test case that fails? (the result should be not rendered
> but
> > it
> > > does render a bit?)
> >
> >
> > no, unfortunately, there's not (yet).
> >
> > then i can look into it a bit more, i haven't seen much of the
> transparent
> > > resolver code.
> > >
> > But are you saying that somebody is setting the transparent resolver to
> > none
> > > visible?
> >
> >
> > exactly.
> >
> > And what component is then inserted to be rerendered for the ajax
> request?
> >
> >
> > the panel, which is the parent of the (invisible) transparent resolver,
> > which contains the markup for the (visible) button
> >
> > Why does isVisibleInHierarchy not work? The transparent resolver is
> still
> > a
> > > parent right?
> >
> >
> > nope, the transparent resolver is not in the hierarchy of the visible
> > button, which is probably the root problem of it all ;)
> >
> > johan
> >
> >
> > Gerolf
> >
> >
> > On 10/24/07, Gerolf Seitz <ge...@gmail.com> wrote:
> > > >
> > > > the transparent resolver is set to non visible in the onClick
> handler
> > of
> > > > an
> > > > AjaxButton.
> > > > ParentResolver is not involved at all.
> > > >
> > > > the problem is, that the transparent resolver is not found in the
> > > > hierarchy
> > > > of the button,
> > > > and thus it's not possible to use Component#isVisibleInHierarchy in
> > > > Component.java:2245
> > > >
> > > > changing the code you mentioned (rather in MarkupContainer than in
> > > > ParentResolver) doesn't help at all,
> > > > because this code is in renderComponentTagBody, which is called in
> > > > MarkupContainer#onComponentTagBody.
> > > > BUT, MarkupContainer#onComponentTagBody is not called, because the
> > > > transparent is not visible (check in Component.java:2245).
> > > >
> > > > tbh, i'm out of ideas on this one :(
> > > >
> > > >
> > > > On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
> > > > >
> > > > > When do you set a transparent resolver to none visible?
> > > > > I also think if 1 parent (transparent resolver or not) is
> invisible
> > > then
> > > > > the
> > > > > childs shouldn't be rendered.
> > > > >
> > > > > Because why else would you set it to not visible?
> > > > >
> > > > > But i haven't looked deeply into the resolver stuff But isn't it
> > > fixable
> > > > > here:
> > > > >
> > > > >
> > > > > MarkupContainer parent = container;
> > > > > while ((parent != null) && (parent.isTransparentResolver()))
> > > > > {
> > > > > // Try to find the component with the parent component.
> > > > > parent = parent.getParent();
> > > > > if (parent != null)
> > > > > {
> > > > > Component component = parent.get(tag.getId());
> > > > > if (component != null)
> > > > > {
> > > > > component.render (markupStream);
> > > > > return true;
> > > > > }
> > > > > }
> > > > > }
> > > > > in the ParentResolver class?
> > > > > So an extra check in that loop if the parent is visible?
> > > > >
> > > > > johan
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > On 10/23/07, Gerolf Seitz < gerolf.seitz@gmail.com> wrote:
> > > > > >
> > > > > > anybody with more insight into transparentResolvers (matej,
> > igor?):
> > > > > >
> > > > > > what is the desired behavior for invisible transparentResolvers?
> > > > > > it's really undefined right now, as the resolver is not
> rendered,
> > > but
> > > > > the
> > > > > > "children" _are_ (though without markup).
> > > > > >
> > > > > > if "children" of an invisible transparentResolver should be
> > > rendered,
> > > > i
> > > > > > may
> > > > > > have an easy fix for this in Component#render(MarkupStream):
> > > > > > instead of
> > > > > > if (isRenderAllowed() && isVisible()) ....
> > > > > > we could do
> > > > > > if (isRenderAllowed() &&
> > > > > >                (isVisible() || (this instanceof MarkupContainer
> &&
> > > > > > ((MarkupContainer)this).isTransparentResolver())))
> > > > > >
> > > > > > nevertheless i think that the expected behavior of setting a
> > > > > > transparentResolver to invisible is that it's "children" are not
> > > > > rendered.
> > > > >
> > > > >
> > > > >
> > > > > Gerolf
> > > > > >
> > > > > > On 10/23/07, Gerolf Seitz (JIRA) <ji...@apache.org> wrote:
> > > > > > >
> > > > > > > invisible TransparentResolver skips markup of visible children
> > and
> > > > > thus
> > > > > > > resulting in an exception in Page#checkRendering (component
> not
> > > > found
> > > > > in
> > > > > > > markup)
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> --------------------------------------------------------------------------------------------------------------------------------------------------------
> > > > >
> > > > > > >
> > > > > > >                  Key: WICKET-1095
> > > > > > >                  URL:
> > > > > https://issues.apache.org/jira/browse/WICKET-1095
> > > > > > >              Project: Wicket
> > > > > > >           Issue Type: Bug
> > > > > > >     Affects Versions: 1.3.0-beta4
> > > > > > >             Reporter: Gerolf Seitz
> > > > > > >              Fix For: 1.3.0-beta5
> > > > > > >
> > > > > > >
> > > > > > > the code involved can be found at
> > > > > > > http://papernapkin.org/pastebin/view/13287
> > > > > > >
> > > > > > > if a transparent (= isTransparentResolver() {return true;})
> > > > > > > markupContainer is set to invisible, the component's markup is
> > > > skipped
> > > > > (
> > > > > > > markupStream.skipComponent() in Component.java line 2319).
> > > > > > > if the parent containing the transparent markupContainer is
> > added
> > > to
> > > > > the
> > > > > > > ajax request target and there is a component (in this case a
> > > button)
> > > > > > > "inside" the transparent markupcontainer's markup but is
> > actually
> > > a
> > > > > > child of
> > > > > > > the transparent markupcontainer's parent, the button is never
> > > > actually
> > > > > > > rendered (due to skipping the markup of the transparent
> > > > > > webmarkupcontainer)
> > > > > > > but is still visibleInHierarchy (see Page.java line 1005),
> > because
> > > > the
> > > > > > > invisible transparent markupcontainer is not a parent of the
> > > button.
> > > > > > >
> > > > > > > the ultimate question is: what is the desired behavior for an
> > > > > invisible
> > > > > > > transparentResolver? render it's "children" or not?
> > > > > > >
> > > > > > > --
> > > > > > > This message is automatically generated by JIRA.
> > > > > > > -
> > > > > > > You can reply to this email to add a comment to the issue
> > online.
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: [jira] Created: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by Johan Compagner <jc...@gmail.com>.
I have to see the code first i think.

Because if the button is not in the hierachy of the transparant container
you could argue that the button needs to be visible. Because what is
invisible?"

johan



On 10/24/07, Gerolf Seitz <ge...@gmail.com> wrote:
>
> On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
> >
> > is there a test case that fails? (the result should be not rendered but
> it
> > does render a bit?)
>
>
> no, unfortunately, there's not (yet).
>
> then i can look into it a bit more, i haven't seen much of the transparent
> > resolver code.
> >
> But are you saying that somebody is setting the transparent resolver to
> none
> > visible?
>
>
> exactly.
>
> And what component is then inserted to be rerendered for the ajax request?
>
>
> the panel, which is the parent of the (invisible) transparent resolver,
> which contains the markup for the (visible) button
>
> Why does isVisibleInHierarchy not work? The transparent resolver is still
> a
> > parent right?
>
>
> nope, the transparent resolver is not in the hierarchy of the visible
> button, which is probably the root problem of it all ;)
>
> johan
>
>
> Gerolf
>
>
> On 10/24/07, Gerolf Seitz <ge...@gmail.com> wrote:
> > >
> > > the transparent resolver is set to non visible in the onClick handler
> of
> > > an
> > > AjaxButton.
> > > ParentResolver is not involved at all.
> > >
> > > the problem is, that the transparent resolver is not found in the
> > > hierarchy
> > > of the button,
> > > and thus it's not possible to use Component#isVisibleInHierarchy in
> > > Component.java:2245
> > >
> > > changing the code you mentioned (rather in MarkupContainer than in
> > > ParentResolver) doesn't help at all,
> > > because this code is in renderComponentTagBody, which is called in
> > > MarkupContainer#onComponentTagBody.
> > > BUT, MarkupContainer#onComponentTagBody is not called, because the
> > > transparent is not visible (check in Component.java:2245).
> > >
> > > tbh, i'm out of ideas on this one :(
> > >
> > >
> > > On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
> > > >
> > > > When do you set a transparent resolver to none visible?
> > > > I also think if 1 parent (transparent resolver or not) is invisible
> > then
> > > > the
> > > > childs shouldn't be rendered.
> > > >
> > > > Because why else would you set it to not visible?
> > > >
> > > > But i haven't looked deeply into the resolver stuff But isn't it
> > fixable
> > > > here:
> > > >
> > > >
> > > > MarkupContainer parent = container;
> > > > while ((parent != null) && (parent.isTransparentResolver()))
> > > > {
> > > > // Try to find the component with the parent component.
> > > > parent = parent.getParent();
> > > > if (parent != null)
> > > > {
> > > > Component component = parent.get(tag.getId());
> > > > if (component != null)
> > > > {
> > > > component.render (markupStream);
> > > > return true;
> > > > }
> > > > }
> > > > }
> > > > in the ParentResolver class?
> > > > So an extra check in that loop if the parent is visible?
> > > >
> > > > johan
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > On 10/23/07, Gerolf Seitz < gerolf.seitz@gmail.com> wrote:
> > > > >
> > > > > anybody with more insight into transparentResolvers (matej,
> igor?):
> > > > >
> > > > > what is the desired behavior for invisible transparentResolvers?
> > > > > it's really undefined right now, as the resolver is not rendered,
> > but
> > > > the
> > > > > "children" _are_ (though without markup).
> > > > >
> > > > > if "children" of an invisible transparentResolver should be
> > rendered,
> > > i
> > > > > may
> > > > > have an easy fix for this in Component#render(MarkupStream):
> > > > > instead of
> > > > > if (isRenderAllowed() && isVisible()) ....
> > > > > we could do
> > > > > if (isRenderAllowed() &&
> > > > >                (isVisible() || (this instanceof MarkupContainer &&
> > > > > ((MarkupContainer)this).isTransparentResolver())))
> > > > >
> > > > > nevertheless i think that the expected behavior of setting a
> > > > > transparentResolver to invisible is that it's "children" are not
> > > > rendered.
> > > >
> > > >
> > > >
> > > > Gerolf
> > > > >
> > > > > On 10/23/07, Gerolf Seitz (JIRA) <ji...@apache.org> wrote:
> > > > > >
> > > > > > invisible TransparentResolver skips markup of visible children
> and
> > > > thus
> > > > > > resulting in an exception in Page#checkRendering (component not
> > > found
> > > > in
> > > > > > markup)
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> --------------------------------------------------------------------------------------------------------------------------------------------------------
> > > >
> > > > > >
> > > > > >                  Key: WICKET-1095
> > > > > >                  URL:
> > > > https://issues.apache.org/jira/browse/WICKET-1095
> > > > > >              Project: Wicket
> > > > > >           Issue Type: Bug
> > > > > >     Affects Versions: 1.3.0-beta4
> > > > > >             Reporter: Gerolf Seitz
> > > > > >              Fix For: 1.3.0-beta5
> > > > > >
> > > > > >
> > > > > > the code involved can be found at
> > > > > > http://papernapkin.org/pastebin/view/13287
> > > > > >
> > > > > > if a transparent (= isTransparentResolver() {return true;})
> > > > > > markupContainer is set to invisible, the component's markup is
> > > skipped
> > > > (
> > > > > > markupStream.skipComponent() in Component.java line 2319).
> > > > > > if the parent containing the transparent markupContainer is
> added
> > to
> > > > the
> > > > > > ajax request target and there is a component (in this case a
> > button)
> > > > > > "inside" the transparent markupcontainer's markup but is
> actually
> > a
> > > > > child of
> > > > > > the transparent markupcontainer's parent, the button is never
> > > actually
> > > > > > rendered (due to skipping the markup of the transparent
> > > > > webmarkupcontainer)
> > > > > > but is still visibleInHierarchy (see Page.java line 1005),
> because
> > > the
> > > > > > invisible transparent markupcontainer is not a parent of the
> > button.
> > > > > >
> > > > > > the ultimate question is: what is the desired behavior for an
> > > > invisible
> > > > > > transparentResolver? render it's "children" or not?
> > > > > >
> > > > > > --
> > > > > > This message is automatically generated by JIRA.
> > > > > > -
> > > > > > You can reply to this email to add a comment to the issue
> online.
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: [jira] Created: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by Gerolf Seitz <ge...@gmail.com>.
On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
>
> is there a test case that fails? (the result should be not rendered but it
> does render a bit?)


no, unfortunately, there's not (yet).

then i can look into it a bit more, i haven't seen much of the transparent
> resolver code.
>
But are you saying that somebody is setting the transparent resolver to none
> visible?


exactly.

And what component is then inserted to be rerendered for the ajax request?


the panel, which is the parent of the (invisible) transparent resolver,
which contains the markup for the (visible) button

Why does isVisibleInHierarchy not work? The transparent resolver is still a
> parent right?


nope, the transparent resolver is not in the hierarchy of the visible
button, which is probably the root problem of it all ;)

johan


Gerolf


On 10/24/07, Gerolf Seitz <ge...@gmail.com> wrote:
> >
> > the transparent resolver is set to non visible in the onClick handler of
> > an
> > AjaxButton.
> > ParentResolver is not involved at all.
> >
> > the problem is, that the transparent resolver is not found in the
> > hierarchy
> > of the button,
> > and thus it's not possible to use Component#isVisibleInHierarchy in
> > Component.java:2245
> >
> > changing the code you mentioned (rather in MarkupContainer than in
> > ParentResolver) doesn't help at all,
> > because this code is in renderComponentTagBody, which is called in
> > MarkupContainer#onComponentTagBody.
> > BUT, MarkupContainer#onComponentTagBody is not called, because the
> > transparent is not visible (check in Component.java:2245).
> >
> > tbh, i'm out of ideas on this one :(
> >
> >
> > On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
> > >
> > > When do you set a transparent resolver to none visible?
> > > I also think if 1 parent (transparent resolver or not) is invisible
> then
> > > the
> > > childs shouldn't be rendered.
> > >
> > > Because why else would you set it to not visible?
> > >
> > > But i haven't looked deeply into the resolver stuff But isn't it
> fixable
> > > here:
> > >
> > >
> > > MarkupContainer parent = container;
> > > while ((parent != null) && (parent.isTransparentResolver()))
> > > {
> > > // Try to find the component with the parent component.
> > > parent = parent.getParent();
> > > if (parent != null)
> > > {
> > > Component component = parent.get(tag.getId());
> > > if (component != null)
> > > {
> > > component.render (markupStream);
> > > return true;
> > > }
> > > }
> > > }
> > > in the ParentResolver class?
> > > So an extra check in that loop if the parent is visible?
> > >
> > > johan
> > >
> > >
> > >
> > >
> > >
> > > On 10/23/07, Gerolf Seitz < gerolf.seitz@gmail.com> wrote:
> > > >
> > > > anybody with more insight into transparentResolvers (matej, igor?):
> > > >
> > > > what is the desired behavior for invisible transparentResolvers?
> > > > it's really undefined right now, as the resolver is not rendered,
> but
> > > the
> > > > "children" _are_ (though without markup).
> > > >
> > > > if "children" of an invisible transparentResolver should be
> rendered,
> > i
> > > > may
> > > > have an easy fix for this in Component#render(MarkupStream):
> > > > instead of
> > > > if (isRenderAllowed() && isVisible()) ....
> > > > we could do
> > > > if (isRenderAllowed() &&
> > > >                (isVisible() || (this instanceof MarkupContainer &&
> > > > ((MarkupContainer)this).isTransparentResolver())))
> > > >
> > > > nevertheless i think that the expected behavior of setting a
> > > > transparentResolver to invisible is that it's "children" are not
> > > rendered.
> > >
> > >
> > >
> > > Gerolf
> > > >
> > > > On 10/23/07, Gerolf Seitz (JIRA) <ji...@apache.org> wrote:
> > > > >
> > > > > invisible TransparentResolver skips markup of visible children and
> > > thus
> > > > > resulting in an exception in Page#checkRendering (component not
> > found
> > > in
> > > > > markup)
> > > > >
> > > > >
> > > >
> > >
> >
> --------------------------------------------------------------------------------------------------------------------------------------------------------
> > >
> > > > >
> > > > >                  Key: WICKET-1095
> > > > >                  URL:
> > > https://issues.apache.org/jira/browse/WICKET-1095
> > > > >              Project: Wicket
> > > > >           Issue Type: Bug
> > > > >     Affects Versions: 1.3.0-beta4
> > > > >             Reporter: Gerolf Seitz
> > > > >              Fix For: 1.3.0-beta5
> > > > >
> > > > >
> > > > > the code involved can be found at
> > > > > http://papernapkin.org/pastebin/view/13287
> > > > >
> > > > > if a transparent (= isTransparentResolver() {return true;})
> > > > > markupContainer is set to invisible, the component's markup is
> > skipped
> > > (
> > > > > markupStream.skipComponent() in Component.java line 2319).
> > > > > if the parent containing the transparent markupContainer is added
> to
> > > the
> > > > > ajax request target and there is a component (in this case a
> button)
> > > > > "inside" the transparent markupcontainer's markup but is actually
> a
> > > > child of
> > > > > the transparent markupcontainer's parent, the button is never
> > actually
> > > > > rendered (due to skipping the markup of the transparent
> > > > webmarkupcontainer)
> > > > > but is still visibleInHierarchy (see Page.java line 1005), because
> > the
> > > > > invisible transparent markupcontainer is not a parent of the
> button.
> > > > >
> > > > > the ultimate question is: what is the desired behavior for an
> > > invisible
> > > > > transparentResolver? render it's "children" or not?
> > > > >
> > > > > --
> > > > > This message is automatically generated by JIRA.
> > > > > -
> > > > > You can reply to this email to add a comment to the issue online.
> > > > >
> > > > >
> > > >
> > >
> >
>

Re: [jira] Created: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by Johan Compagner <jc...@gmail.com>.
is there a test case that fails? (the result should be not rendered but it
does render a bit?)

then i can look into it a bit more, i haven't seen much of the transparent
resolver code.

But are you saying that somebody is setting the transparent resolver to none
visible?
And what component is then inserted to be rerendered for the ajax request?

Why does isVisibleInHierarchy not work? The transparent resolver is still a
parent right?

johan


On 10/24/07, Gerolf Seitz <ge...@gmail.com> wrote:
>
> the transparent resolver is set to non visible in the onClick handler of
> an
> AjaxButton.
> ParentResolver is not involved at all.
>
> the problem is, that the transparent resolver is not found in the
> hierarchy
> of the button,
> and thus it's not possible to use Component#isVisibleInHierarchy in
> Component.java:2245
>
> changing the code you mentioned (rather in MarkupContainer than in
> ParentResolver) doesn't help at all,
> because this code is in renderComponentTagBody, which is called in
> MarkupContainer#onComponentTagBody.
> BUT, MarkupContainer#onComponentTagBody is not called, because the
> transparent is not visible (check in Component.java:2245).
>
> tbh, i'm out of ideas on this one :(
>
>
> On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
> >
> > When do you set a transparent resolver to none visible?
> > I also think if 1 parent (transparent resolver or not) is invisible then
> > the
> > childs shouldn't be rendered.
> >
> > Because why else would you set it to not visible?
> >
> > But i haven't looked deeply into the resolver stuff But isn't it fixable
> > here:
> >
> >
> > MarkupContainer parent = container;
> > while ((parent != null) && (parent.isTransparentResolver()))
> > {
> > // Try to find the component with the parent component.
> > parent = parent.getParent();
> > if (parent != null)
> > {
> > Component component = parent.get(tag.getId());
> > if (component != null)
> > {
> > component.render (markupStream);
> > return true;
> > }
> > }
> > }
> > in the ParentResolver class?
> > So an extra check in that loop if the parent is visible?
> >
> > johan
> >
> >
> >
> >
> >
> > On 10/23/07, Gerolf Seitz < gerolf.seitz@gmail.com> wrote:
> > >
> > > anybody with more insight into transparentResolvers (matej, igor?):
> > >
> > > what is the desired behavior for invisible transparentResolvers?
> > > it's really undefined right now, as the resolver is not rendered, but
> > the
> > > "children" _are_ (though without markup).
> > >
> > > if "children" of an invisible transparentResolver should be rendered,
> i
> > > may
> > > have an easy fix for this in Component#render(MarkupStream):
> > > instead of
> > > if (isRenderAllowed() && isVisible()) ....
> > > we could do
> > > if (isRenderAllowed() &&
> > >                (isVisible() || (this instanceof MarkupContainer &&
> > > ((MarkupContainer)this).isTransparentResolver())))
> > >
> > > nevertheless i think that the expected behavior of setting a
> > > transparentResolver to invisible is that it's "children" are not
> > rendered.
> >
> >
> >
> > Gerolf
> > >
> > > On 10/23/07, Gerolf Seitz (JIRA) <ji...@apache.org> wrote:
> > > >
> > > > invisible TransparentResolver skips markup of visible children and
> > thus
> > > > resulting in an exception in Page#checkRendering (component not
> found
> > in
> > > > markup)
> > > >
> > > >
> > >
> >
> --------------------------------------------------------------------------------------------------------------------------------------------------------
> >
> > > >
> > > >                  Key: WICKET-1095
> > > >                  URL:
> > https://issues.apache.org/jira/browse/WICKET-1095
> > > >              Project: Wicket
> > > >           Issue Type: Bug
> > > >     Affects Versions: 1.3.0-beta4
> > > >             Reporter: Gerolf Seitz
> > > >              Fix For: 1.3.0-beta5
> > > >
> > > >
> > > > the code involved can be found at
> > > > http://papernapkin.org/pastebin/view/13287
> > > >
> > > > if a transparent (= isTransparentResolver() {return true;})
> > > > markupContainer is set to invisible, the component's markup is
> skipped
> > (
> > > > markupStream.skipComponent() in Component.java line 2319).
> > > > if the parent containing the transparent markupContainer is added to
> > the
> > > > ajax request target and there is a component (in this case a button)
> > > > "inside" the transparent markupcontainer's markup but is actually a
> > > child of
> > > > the transparent markupcontainer's parent, the button is never
> actually
> > > > rendered (due to skipping the markup of the transparent
> > > webmarkupcontainer)
> > > > but is still visibleInHierarchy (see Page.java line 1005), because
> the
> > > > invisible transparent markupcontainer is not a parent of the button.
> > > >
> > > > the ultimate question is: what is the desired behavior for an
> > invisible
> > > > transparentResolver? render it's "children" or not?
> > > >
> > > > --
> > > > This message is automatically generated by JIRA.
> > > > -
> > > > You can reply to this email to add a comment to the issue online.
> > > >
> > > >
> > >
> >
>

Re: [jira] Created: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by Gerolf Seitz <ge...@gmail.com>.
the transparent resolver is set to non visible in the onClick handler of an
AjaxButton.
ParentResolver is not involved at all.

the problem is, that the transparent resolver is not found in the hierarchy
of the button,
and thus it's not possible to use Component#isVisibleInHierarchy in
Component.java:2245

changing the code you mentioned (rather in MarkupContainer than in
ParentResolver) doesn't help at all,
because this code is in renderComponentTagBody, which is called in
MarkupContainer#onComponentTagBody.
BUT, MarkupContainer#onComponentTagBody is not called, because the
transparent is not visible (check in Component.java:2245).

tbh, i'm out of ideas on this one :(


On 10/24/07, Johan Compagner <jc...@gmail.com> wrote:
>
> When do you set a transparent resolver to none visible?
> I also think if 1 parent (transparent resolver or not) is invisible then
> the
> childs shouldn't be rendered.
>
> Because why else would you set it to not visible?
>
> But i haven't looked deeply into the resolver stuff But isn't it fixable
> here:
>
>
> MarkupContainer parent = container;
> while ((parent != null) && (parent.isTransparentResolver()))
> {
> // Try to find the component with the parent component.
> parent = parent.getParent();
> if (parent != null)
> {
> Component component = parent.get(tag.getId());
> if (component != null)
> {
> component.render (markupStream);
> return true;
> }
> }
> }
> in the ParentResolver class?
> So an extra check in that loop if the parent is visible?
>
> johan
>
>
>
>
>
> On 10/23/07, Gerolf Seitz < gerolf.seitz@gmail.com> wrote:
> >
> > anybody with more insight into transparentResolvers (matej, igor?):
> >
> > what is the desired behavior for invisible transparentResolvers?
> > it's really undefined right now, as the resolver is not rendered, but
> the
> > "children" _are_ (though without markup).
> >
> > if "children" of an invisible transparentResolver should be rendered, i
> > may
> > have an easy fix for this in Component#render(MarkupStream):
> > instead of
> > if (isRenderAllowed() && isVisible()) ....
> > we could do
> > if (isRenderAllowed() &&
> >                (isVisible() || (this instanceof MarkupContainer &&
> > ((MarkupContainer)this).isTransparentResolver())))
> >
> > nevertheless i think that the expected behavior of setting a
> > transparentResolver to invisible is that it's "children" are not
> rendered.
>
>
>
> Gerolf
> >
> > On 10/23/07, Gerolf Seitz (JIRA) <ji...@apache.org> wrote:
> > >
> > > invisible TransparentResolver skips markup of visible children and
> thus
> > > resulting in an exception in Page#checkRendering (component not found
> in
> > > markup)
> > >
> > >
> >
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
> > >
> > >                  Key: WICKET-1095
> > >                  URL:
> https://issues.apache.org/jira/browse/WICKET-1095
> > >              Project: Wicket
> > >           Issue Type: Bug
> > >     Affects Versions: 1.3.0-beta4
> > >             Reporter: Gerolf Seitz
> > >              Fix For: 1.3.0-beta5
> > >
> > >
> > > the code involved can be found at
> > > http://papernapkin.org/pastebin/view/13287
> > >
> > > if a transparent (= isTransparentResolver() {return true;})
> > > markupContainer is set to invisible, the component's markup is skipped
> (
> > > markupStream.skipComponent() in Component.java line 2319).
> > > if the parent containing the transparent markupContainer is added to
> the
> > > ajax request target and there is a component (in this case a button)
> > > "inside" the transparent markupcontainer's markup but is actually a
> > child of
> > > the transparent markupcontainer's parent, the button is never actually
> > > rendered (due to skipping the markup of the transparent
> > webmarkupcontainer)
> > > but is still visibleInHierarchy (see Page.java line 1005), because the
> > > invisible transparent markupcontainer is not a parent of the button.
> > >
> > > the ultimate question is: what is the desired behavior for an
> invisible
> > > transparentResolver? render it's "children" or not?
> > >
> > > --
> > > This message is automatically generated by JIRA.
> > > -
> > > You can reply to this email to add a comment to the issue online.
> > >
> > >
> >
>

Re: [jira] Created: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by Johan Compagner <jc...@gmail.com>.
When do you set a transparent resolver to none visible?
I also think if 1 parent (transparent resolver or not) is invisible then the
childs shouldn't be rendered.

Because why else would you set it to not visible?

But i haven't looked deeply into the resolver stuff But isn't it fixable
here:


MarkupContainer parent = container;
while ((parent != null) && (parent.isTransparentResolver()))
{
// Try to find the component with the parent component.
parent = parent.getParent();
if (parent != null)
{
Component component = parent.get(tag.getId());
if (component != null)
{
component.render(markupStream);
return true;
}
}
}
in the ParentResolver class?
So an extra check in that loop if the parent is visible?

johan





On 10/23/07, Gerolf Seitz <ge...@gmail.com> wrote:
>
> anybody with more insight into transparentResolvers (matej, igor?):
>
> what is the desired behavior for invisible transparentResolvers?
> it's really undefined right now, as the resolver is not rendered, but the
> "children" _are_ (though without markup).
>
> if "children" of an invisible transparentResolver should be rendered, i
> may
> have an easy fix for this in Component#render(MarkupStream):
> instead of
> if (isRenderAllowed() && isVisible()) ....
> we could do
> if (isRenderAllowed() &&
>                (isVisible() || (this instanceof MarkupContainer &&
> ((MarkupContainer)this).isTransparentResolver())))
>
> nevertheless i think that the expected behavior of setting a
> transparentResolver to invisible is that it's "children" are not rendered.



Gerolf
>
> On 10/23/07, Gerolf Seitz (JIRA) <ji...@apache.org> wrote:
> >
> > invisible TransparentResolver skips markup of visible children and thus
> > resulting in an exception in Page#checkRendering (component not found in
> > markup)
> >
> >
> --------------------------------------------------------------------------------------------------------------------------------------------------------
> >
> >                  Key: WICKET-1095
> >                  URL: https://issues.apache.org/jira/browse/WICKET-1095
> >              Project: Wicket
> >           Issue Type: Bug
> >     Affects Versions: 1.3.0-beta4
> >             Reporter: Gerolf Seitz
> >              Fix For: 1.3.0-beta5
> >
> >
> > the code involved can be found at
> > http://papernapkin.org/pastebin/view/13287
> >
> > if a transparent (= isTransparentResolver() {return true;})
> > markupContainer is set to invisible, the component's markup is skipped (
> > markupStream.skipComponent() in Component.java line 2319).
> > if the parent containing the transparent markupContainer is added to the
> > ajax request target and there is a component (in this case a button)
> > "inside" the transparent markupcontainer's markup but is actually a
> child of
> > the transparent markupcontainer's parent, the button is never actually
> > rendered (due to skipping the markup of the transparent
> webmarkupcontainer)
> > but is still visibleInHierarchy (see Page.java line 1005), because the
> > invisible transparent markupcontainer is not a parent of the button.
> >
> > the ultimate question is: what is the desired behavior for an invisible
> > transparentResolver? render it's "children" or not?
> >
> > --
> > This message is automatically generated by JIRA.
> > -
> > You can reply to this email to add a comment to the issue online.
> >
> >
>

Re: [jira] Created: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by Gerolf Seitz <ge...@gmail.com>.
anybody with more insight into transparentResolvers (matej, igor?):

what is the desired behavior for invisible transparentResolvers?
it's really undefined right now, as the resolver is not rendered, but the
"children" _are_ (though without markup).

if "children" of an invisible transparentResolver should be rendered, i may
have an easy fix for this in Component#render(MarkupStream):
instead of
if (isRenderAllowed() && isVisible()) ....
we could do
if (isRenderAllowed() &&
                (isVisible() || (this instanceof MarkupContainer &&
((MarkupContainer)this).isTransparentResolver())))

nevertheless i think that the expected behavior of setting a
transparentResolver to invisible is that it's "children" are not rendered.


  Gerolf

On 10/23/07, Gerolf Seitz (JIRA) <ji...@apache.org> wrote:
>
> invisible TransparentResolver skips markup of visible children and thus
> resulting in an exception in Page#checkRendering (component not found in
> markup)
>
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                  Key: WICKET-1095
>                  URL: https://issues.apache.org/jira/browse/WICKET-1095
>              Project: Wicket
>           Issue Type: Bug
>     Affects Versions: 1.3.0-beta4
>             Reporter: Gerolf Seitz
>              Fix For: 1.3.0-beta5
>
>
> the code involved can be found at
> http://papernapkin.org/pastebin/view/13287
>
> if a transparent (= isTransparentResolver() {return true;})
> markupContainer is set to invisible, the component's markup is skipped (
> markupStream.skipComponent() in Component.java line 2319).
> if the parent containing the transparent markupContainer is added to the
> ajax request target and there is a component (in this case a button)
> "inside" the transparent markupcontainer's markup but is actually a child of
> the transparent markupcontainer's parent, the button is never actually
> rendered (due to skipping the markup of the transparent webmarkupcontainer)
> but is still visibleInHierarchy (see Page.java line 1005), because the
> invisible transparent markupcontainer is not a parent of the button.
>
> the ultimate question is: what is the desired behavior for an invisible
> transparentResolver? render it's "children" or not?
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>

[jira] Commented: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by "Juergen Donnerstag (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WICKET-1095?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12539321 ] 

Juergen Donnerstag commented on WICKET-1095:
--------------------------------------------

Just as a side note. The root cause of the problem is that we require transparent resolvers which essentially destroy the tree like hierarchy of components. The reason why we need transparent resolvers is because in 1.3 we not yet able to read/analyze the associated markup of a component within its constructor, to create these automatic components which require transparent resolvers within the constructure and to add user components to the correct container (the automatically created one) instead of the container the user is adding his child component to. 

> invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-1095
>                 URL: https://issues.apache.org/jira/browse/WICKET-1095
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: 1.3.0-beta4
>            Reporter: Gerolf Seitz
>            Assignee: Johan Compagner
>             Fix For: 1.3.0-beta5
>
>         Attachments: WICKET-1095.zip
>
>
> the code involved can be found at http://papernapkin.org/pastebin/view/13287
> if a transparent (= isTransparentResolver() {return true;}) markupContainer is set to invisible, the component's markup is skipped (markupStream.skipComponent() in Component.java line 2319).
> if the parent containing the transparent markupContainer is added to the ajax request target and there is a component (in this case a button) "inside" the transparent markupcontainer's markup but is actually a child of the transparent markupcontainer's parent, the button is never actually rendered (due to skipping the markup of the transparent webmarkupcontainer) but is still visibleInHierarchy (see Page.java line 1005), because the invisible transparent markupcontainer is not a parent of the button.
> the ultimate question is: what is the desired behavior for an invisible transparentResolver? render it's "children" or not?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by "Gerolf Seitz (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-1095?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gerolf Seitz updated WICKET-1095:
---------------------------------

    Attachment:     (was: WICKET-1095.zip)

> invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-1095
>                 URL: https://issues.apache.org/jira/browse/WICKET-1095
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: 1.3.0-beta4
>            Reporter: Gerolf Seitz
>             Fix For: 1.3.0-beta5
>
>         Attachments: WICKET-1095.zip
>
>
> the code involved can be found at http://papernapkin.org/pastebin/view/13287
> if a transparent (= isTransparentResolver() {return true;}) markupContainer is set to invisible, the component's markup is skipped (markupStream.skipComponent() in Component.java line 2319).
> if the parent containing the transparent markupContainer is added to the ajax request target and there is a component (in this case a button) "inside" the transparent markupcontainer's markup but is actually a child of the transparent markupcontainer's parent, the button is never actually rendered (due to skipping the markup of the transparent webmarkupcontainer) but is still visibleInHierarchy (see Page.java line 1005), because the invisible transparent markupcontainer is not a parent of the button.
> the ultimate question is: what is the desired behavior for an invisible transparentResolver? render it's "children" or not?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by "Gerolf Seitz (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-1095?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gerolf Seitz updated WICKET-1095:
---------------------------------

    Attachment: WICKET-1095.zip

files to reproduce the bug

> invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-1095
>                 URL: https://issues.apache.org/jira/browse/WICKET-1095
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: 1.3.0-beta4
>            Reporter: Gerolf Seitz
>             Fix For: 1.3.0-beta5
>
>         Attachments: WICKET-1095.zip
>
>
> the code involved can be found at http://papernapkin.org/pastebin/view/13287
> if a transparent (= isTransparentResolver() {return true;}) markupContainer is set to invisible, the component's markup is skipped (markupStream.skipComponent() in Component.java line 2319).
> if the parent containing the transparent markupContainer is added to the ajax request target and there is a component (in this case a button) "inside" the transparent markupcontainer's markup but is actually a child of the transparent markupcontainer's parent, the button is never actually rendered (due to skipping the markup of the transparent webmarkupcontainer) but is still visibleInHierarchy (see Page.java line 1005), because the invisible transparent markupcontainer is not a parent of the button.
> the ultimate question is: what is the desired behavior for an invisible transparentResolver? render it's "children" or not?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by "Gerolf Seitz (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-1095?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gerolf Seitz updated WICKET-1095:
---------------------------------

    Attachment: WICKET-1095.zip

attached a simpler scenario

> invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-1095
>                 URL: https://issues.apache.org/jira/browse/WICKET-1095
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: 1.3.0-beta4
>            Reporter: Gerolf Seitz
>             Fix For: 1.3.0-beta5
>
>         Attachments: WICKET-1095.zip
>
>
> the code involved can be found at http://papernapkin.org/pastebin/view/13287
> if a transparent (= isTransparentResolver() {return true;}) markupContainer is set to invisible, the component's markup is skipped (markupStream.skipComponent() in Component.java line 2319).
> if the parent containing the transparent markupContainer is added to the ajax request target and there is a component (in this case a button) "inside" the transparent markupcontainer's markup but is actually a child of the transparent markupcontainer's parent, the button is never actually rendered (due to skipping the markup of the transparent webmarkupcontainer) but is still visibleInHierarchy (see Page.java line 1005), because the invisible transparent markupcontainer is not a parent of the button.
> the ultimate question is: what is the desired behavior for an invisible transparentResolver? render it's "children" or not?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by "Johan Compagner (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-1095?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Johan Compagner closed WICKET-1095.
-----------------------------------

    Resolution: Fixed

No the "child" components shouldnt be rendered. thats fine by me
Also the Page.checkRendering should take that into account. So now
if a component isn't rendered (but is visible) then we check if a sibling of that component
is a none visible transparent resolver. If that is the case then we just put out a warn statement but don't throw the exception.

> invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-1095
>                 URL: https://issues.apache.org/jira/browse/WICKET-1095
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: 1.3.0-beta4
>            Reporter: Gerolf Seitz
>            Assignee: Johan Compagner
>             Fix For: 1.3.0-beta5
>
>         Attachments: WICKET-1095.zip
>
>
> the code involved can be found at http://papernapkin.org/pastebin/view/13287
> if a transparent (= isTransparentResolver() {return true;}) markupContainer is set to invisible, the component's markup is skipped (markupStream.skipComponent() in Component.java line 2319).
> if the parent containing the transparent markupContainer is added to the ajax request target and there is a component (in this case a button) "inside" the transparent markupcontainer's markup but is actually a child of the transparent markupcontainer's parent, the button is never actually rendered (due to skipping the markup of the transparent webmarkupcontainer) but is still visibleInHierarchy (see Page.java line 1005), because the invisible transparent markupcontainer is not a parent of the button.
> the ultimate question is: what is the desired behavior for an invisible transparentResolver? render it's "children" or not?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (WICKET-1095) invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)

Posted by "Igor Vaynberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-1095?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Igor Vaynberg reassigned WICKET-1095:
-------------------------------------

    Assignee: Johan Compagner

> invisible TransparentResolver skips markup of visible children and thus resulting in an exception in Page#checkRendering (component not found in markup)
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-1095
>                 URL: https://issues.apache.org/jira/browse/WICKET-1095
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: 1.3.0-beta4
>            Reporter: Gerolf Seitz
>            Assignee: Johan Compagner
>             Fix For: 1.3.0-beta5
>
>         Attachments: WICKET-1095.zip
>
>
> the code involved can be found at http://papernapkin.org/pastebin/view/13287
> if a transparent (= isTransparentResolver() {return true;}) markupContainer is set to invisible, the component's markup is skipped (markupStream.skipComponent() in Component.java line 2319).
> if the parent containing the transparent markupContainer is added to the ajax request target and there is a component (in this case a button) "inside" the transparent markupcontainer's markup but is actually a child of the transparent markupcontainer's parent, the button is never actually rendered (due to skipping the markup of the transparent webmarkupcontainer) but is still visibleInHierarchy (see Page.java line 1005), because the invisible transparent markupcontainer is not a parent of the button.
> the ultimate question is: what is the desired behavior for an invisible transparentResolver? render it's "children" or not?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.