[ 
https://issues.apache.org/jira/browse/WICKET-5013?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13566793#comment-13566793
 ] 

Christoph Leiter commented on WICKET-5013:
------------------------------------------

Now that was difficult to reproduce in a quickstart. It happened only if I 
added the DebugBar. I traced it further down and this happens because 
getPage().detach() is called (inside DebugBar somewhere, to measure page size). 
This method calls MarkupContainer#detachChildren and there is this:

                                // We need to keep InlineEnclosures for Ajax 
request handling.
                                // TODO this is really ugly. Feature request 
for 1.5: change auto-component that
                                // they don't need to be removed anymore.
                                if (component.isAuto() && !(component 
instanceof InlineEnclosure))
                                {
                                        children_remove(i);
                                }

If I add && !(component instanceof Enclosure) it avoids the problem. I don't 
have a any real insight how auto components work and so I'm quite certain that 
this is the wrong approach. :)

I'll add a quickstart so that someone can have a look at it.
                
> Wicket Enclosure fails with more than one component
> ---------------------------------------------------
>
>                 Key: WICKET-5013
>                 URL: https://issues.apache.org/jira/browse/WICKET-5013
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 6.3.0
>         Environment: Sun JDK 1.7.0_11
> Ubuntu 12.10
>            Reporter: Magne Rasmussen
>         Attachments: WICKET-5013.zip
>
>
> An enclosure like:
> <wicket:enclosure child="message">
>   <span wicket:id="message" />
>   <a href="#" wicket:id="link"></a>
> </wicket:enclosure>
> fails with:
> org.apache.wicket.WicketRuntimeException: The component(s) below failed to 
> render. Possible reasons could be that: 1) you have added a component in code 
> but forgot to reference it in the markup (thus the component will never be 
> rendered), 2) if your components were added in a parent container then make 
> sure the markup for the child container includes them in <wicket:extend>.
> 1. [ExternalLink [Component id = link]]
> It will report failed rendering for all components within the enclosure 
> except the child.
> This works if I turn the enclosure into an inline enclosure:
> <div wicket:enclosure="message">
>   <span wicket:id="message" />
>   <a href="#" wicket:id="link"></a>
> </div>
> I got this error when upgrading from Wicket 6.2.0 to 6.3.0.
> I also noticed that the AjaxEnclosureListener only visits the 
> InlineEnclosures.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to