<wicket:enclosure> causes a crash when any child component is not explicitly 
added to the parent markup: i.e. it was intended be resolved by a custom 
IComponentResolver
------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: WICKET-2485
                 URL: https://issues.apache.org/jira/browse/WICKET-2485
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.4.1
         Environment: Java 6
JDO implementation: DataNucleus
IOC: exPOJO
            Reporter: Chris Colman


Wicket has a very powerful IComponentResolver interface that allows a developer 
to supply their own IComponentResolver implementation which allows component 
based assembly of pages from a prebuilt collection of panels without needing to 
make hard coded instantiations of the entire set of panels into *every* page 
class that *may* use them. This flexibility is incredibly powerful and means 
that a great amount of page assembly can take place purely in the markup.

Unfortunately any components embedded within a <wicket:enclosure> markup 
</wicket:enclosure> tag (and possibly other 'wrapping' style tags like 
wicket:border) will not trigger the normal 'component resolution' process that 
calls the IComponentResolver implementation and so the children cause a 
'component not found' page crash unless they are explicitly added to the page 
that will contain them.

This is extremely undesirable because there can be potentially many, many 
choices of components/panels that can be enclosed. For reasons of flexibility, 
code maintainability, efficient CPU and memory usage it is undesirable to add 
the entire collection of child component candidates to every page that could 
get instantiated with an enclosure in it.

This bug is trivial to reproduce - set up an IComponentResolver that resolves a 
simple panel, do not add that panel explicitly to a page, but refer to it 
inside a wicket:enclosure tag in the page markup. Display the page in a browser.

I think this would be a fairly straightforward fix for someone who has a good 
understanding of the wicket framework lifecycles. I had a few attempts at 
rectifying the issue but after much trial and error seem unable to locate the 
appropriate place for the 'component resolution' to be triggered.

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

Reply via email to