Hi devs,

Wicket's container rendering creates a new component for each
wicket:fragment it finds in the markup, and puts it in the component tree.
This process has a few issues and I prose us to simplify it.

issues:

- the new component for the fragment can conflict with user's components
since we need a wicket:id for it and we don't have a reserved namespace
- can cause unexpected behaviours like a container with no children testing
true for container.size() > 0
- adds an unnecessary object in the tree
- adds unnecessary complexity like custom component versioning (we are
setting this component to be not versioned)
- causes misleading exception messages since the fragment markup can be
mistaken by an actual component markup

My idea it to simple skip wicket:fragment's markup while rendering
containers. The only place we need to load this markup inside the markup
sourcing strategy when providing for a Fragment.

The implications are to remove FragmentResolver and possible to change
wicket:fragment tag's id attribute from wicket:id to fragment-id or id in
Wicket 8.

I see this as a non trivial internal change for Wicket 6 and 7, so I worked
on a branch[1] to showcase the idea and to get your thoughts while
resolving WICKET-6219 in wicket-7.x branch.

cheers,

Pedro Santos

1 - https://github.com/apache/wicket/tree/WICKET-6219-no-fragment-resolver

Reply via email to