Now that I am working with the markupresourcestream directly, I am
beginning to think that Wicket should support dually both component
hierarchy and markup hierarchy.

Wicket chould have two kinds of add methods:

add(Component c)

add(String anchorId, MarkupResourceStreamProvider c)

Such a MarkupResourceStreamProvider object could basically look same
as a component (having setvisible,setenabled,addbehavior,etc.), but
when it is added, its output would be injected to the parent's markup
stream at anchor position (instead of a component being added to a
component tree).

The benefit would be, for a "stateless" component, its markup result
could be automagically cached and the "component" itself that defined
the markup, would not remain to waste any resources.

Even better, the output of such a MarkupResourceStreamProvider should
be logically a chain of "strings" alternating with possible IModels
such that dynamic model values could be updated every time parent is

Any comments?



2012/2/25 Martin Makundi <>:
> Also
>   public IResourceStream getMarkupResourceStream(MarkupContainer
> container, Class<?> containerClass) {
> seems quite feasible for making conditional markup.
> However, I must override
> MarkupContainer.getAssociatedMarkupStream(enforceReload=true) and
> IMarkupCacheKeyProvider.getCacheKey(==null) to get a different markup
> for each component.
> **
> Martin
> 2012/2/25 Martin Makundi <>:
>> @Per about 
>> You say "If condition A is met, show label A. If not, use
>> setVisible(false) to hide it. Combine that with Enclosures... Trouble
>> is, while the hidden component doesn't show up in the markup, it's
>> still part of the component tree! "
>> I remember sometimes when using enclosures, I have rendered a page
>> which has not added some components inside an enclosure. Maybe there
>> could be a way to mark a region in the markup (like enclosure) where a
>> component can be optionally added.
>> This way "setVisible=false" could be achieved simply by not adding
>> that component.
>> **
>> Martin

To unsubscribe, e-mail:
For additional commands, e-mail:

Reply via email to