Hey Dan -
I agree that this would be a useful feature. I can easily imagine cases
where template authors may want to selectively render some bit of
content depending on whether a particular named template has been
ui:define'd.
Actually, a similar case may come up with composite component facets,
depending on how <composite:insertFacet> is implemented. If inserted
facets remain parented to the component component, then we should be
able to use #{compositeComponent.facets.<facet name here>} to check for
the presence of a particular facet. However, if insertFacet relocates
the facet component, seems like this would get trickier.
Andy
Dan Allen wrote On 4/8/2009 4:07 PM ET:
I just thought of a feature I have often needed in Facelets that
perhaps we can weave into the VDL. It would be nice to know if a named
template has been defined inside the master template. Consider the
following example:
page.xhtml
<ui:composition template="/WEB-INF/template.xhtml" ...>
<ui:param name="title" value="VDL Template Page"/>
<ui:define name="content">
<h:outputText value="Hello World" />
</ui:define>
</ui:composition>
template.xhtml
<html ...>
<h:head>
<title>#{not empty title ? title : 'My Site'}</title>
</h:head>
<body>
<div id="container">
<ui:insert name="content"/> <- how do I know if it has
been defined?
</div>
</body>
</html>
Since the <ui:param> creates a regular variable, I can check whether
it is empty or not. But I do not have a way to check if the named
template "content" has been defined. Of course, I can nest default
content within the <ui:insert>, which is used when the named template
is not defined, but there are cases when I simply need to know whether
or not it is defined. Could we come up with some way to check if it is
defined?
-Dan
--
Dan Allen
Senior Software Engineer, Red Hat | Author of Seam in Action
http://mojavelinux.com
http://mojavelinux.com/seaminaction
http://in.relation.to/Bloggers/Dan
NOTE: While I make a strong effort to keep up with my email on a daily
basis, personal or other work matters can sometimes keep me away
from my email. If you contact me, but don't hear back for more than a
week,
it is very likely that I am excessively backlogged or the message was
caught in the spam filters. Please don't hesitate to resend a message if
you feel that it did not reach my attention.