Hi Andy,

my 2cents (isn´t worth much in this discussion if I don´t look any
deeper into this ;)

> Given that ui:decorate is a non-trimming ui:composition, why would these
> behave differently with respect to interaction with the TemplateClient?  I
> would think that both of these handlers should be calling pushClient().

I don´t see why ui:decorate should be different from ui:composition, either.

> Also, the multi-level search strategy seems somewhat questionable to me.  A
> template exposes a certain number of of names into which content could be
> inserted.  The consumer of the template leverages that contract and
> specifies content to be inserted into some subset of those names.  When
> attempting to locate content to insert, why should the template look any
> further up the stack than the nearest consumer (ie. the most recently pushed
> TemplateClient)?


Well, templates are certainly hierarchical - does the nearest consumer
carry all information, or just the one which is defined in itself?

> Seems like this should have been implemented as a simple stack solution
> where the most recent TemplateClient is always used to resolve insertions.
>
> Of course, there may be perfectly fine reasons for why Facelets supports
> extendClient() and performs multi-level searches to locate content to
> insert.  Just not clear what these reasons are.
>
> Note that for composite components, we should not follow the Facelets
> precedent here.   If a composite component exposes a facet for insertion, we
> should only look to immediate consumer of the composite component for
> matches - ie. we should not be walking up the entire ancestor stack.
>
>> 3) Why does InsertHandler call extendClient()() and why does it implement
>> TemplateClient?
>>
>> Because ui:insert could expose a spot too, and it is resolved to there if
>> no ui:define (exposed by ui:composition) with the name is exposed too.
>
> Right, so I see that InsertHandler is implemented this way, but... why?
>  Seems silly to have ui:insert serve two entirely different purposes - ie.
> to both identify an insertion point as well as to define content for
> included templates.   Why should ui:insert act both as a ui:insert *and* as
> a ui:define?   If a template author wants to pass content through from an
> outer page to an inner/nested template, seems like the right way to
> accomplish this would be to wrap the ui:insert inside of a ui:define.

Well, if you define a template, you use ui:insert to mark the spots
where content can be - and then you include default content right
away. Is it this which makes ui:insert a thing of both worlds?

best regards,

Martin

-- 

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Reply via email to