I am also hedging towards the older syntax because I have found it very flexible and I am worried that the new syntax may be limiting. For example, I am using the following component for labels
<component jsfid="label" extends="clayOut" allowBody="false"> <attributes> <set name="value" value="<label for="@labelFor">@labelName:</label>" /> <set name="excapeXml" value="false" /> </attributes> </component> I am not sure this could be done with the new syntax. On 11/16/05, Gary VanMatre <[EMAIL PROTECTED]> wrote: > We had some discussion on changing the Clay symbols to make them more JSF > like. I wanted to regroup on this to make sure that this is something that > we want to change. > > The symbols allow customizing a subtree under the JSF component tree without > using inheritance. We described the differences as being horizontal > customization versus vertical. > > I'll give a refresher example from the ConfigTestCase. > > http://svn.apache.org/viewcvs.cgi/struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/ConfigTestCase.java?view=markup > public void testSymbolInheritance() > > Base XML config defines a style attribute where the value is a symbol. The > default value is also established. > > <component jsfid="baseSymbolLabel" extends="outputLabel" allowBody="false"> > <attributes> > <set name="style" value="@mystyle"/> > </attributes> > <symbols> > <set name="mystyle" value="color:blue"/> > </symbols> > </component> > > > There are three ways to use symbols. > > 1) HTML: > > <label jsfid="baseSymbolLabel" allowBody="true" mystyle="color:yellow">Label > Text:</label> > > 2) JSP: > > <clay:clay jsfid="baseSymbolLabel" id="mySymbol"> > <clay:sybmol name="mystyle" value="blue"/> > </clay:clay> > > 3) XML: > <component jsfid="symbol2Label" extends="symbol1Label" allowBody="false"> > <symbols> > <set name="mystyle" value="color:red"/> > </symbols> > </component> > > <component jsfid="symbolPanel" extends="panelGrid"> > <element renderId="1" jsfid="symbol1Label" /> > <element renderId="2" jsfid="symbol1Label"> > <symbols > > <set name="mystyle" value="color:red"/> > </symbols> > </element> > </component> > > > > The current syntax allow for partial replacement. The symbol is replaced > prior to creating a binding expression. > > <set name="action" value="managed-bean-name.saveAction }"/> > <set name="action" value="@class"/> > <set name="action" value="[EMAIL PROTECTED]"/> > > We proposed that we make the syntax more JSF oriented. > > <set name="action" value="#{shale:managed-bean.saveAction }"/> > <set name="action" value="#{shale:attribute.class }"/> > <set name="action" value="#{shale:managed-bean.attribute.class}"/> > > > The new syntax would be more EL like but would require a custom property > resolver. > The new syntax would not allow for partial replacement. > The new syntax would require creating a wrapper Method and Value binding to > hold the symbols overrides. > > The old syntax is foreign but allows for partial replacement. > The old syntax resolves the expression before EL binding so exceptions report > the expression post symbol merger. > > > Well, I'm kind of hedging toward the older syntax. Any thought? > > Gary >