>From: Richard Wallace <[EMAIL PROTECTED]> > > Hello, > > I'd like to extend the inputSecret component and give the new component > an added attribute. Basically, what I want to do is create a component > that has the tomahawk equal validator attached to it. So, what I've got > now is: > > ><view> > <component jsfid="t:validateEqual" >componentType="org.apache.myfaces.validator.Equal"> > <attributes> > <set name="for" bindingType="Early" /> > </attributes> > </component> > > <component jsfid="inputPasswordVerification" extends="inputSecret"> > <validator jsfid="t:validateEqual"> > <attributes> > <set name="for" value="password"/> > </attributes> > </validator> > </component> ></view> > > > What I'd like to be able to do is replace the attribute for "for" with > something more like "@for" or something so that I can use the component > like: > ><input type="password" jsfid="inputSecret" id="password" /> ><input type="password" jsfid="inputPasswordVerification" for="password" /> > > Can I add an attribute like that in clay? That would be very cool. >
You should totally be able to do this using Clay. There is a very similar example in the symbols (symbols/page3.html) usecases. There's one more layer than you need in your example. Includes an html template from the class path passing symbols label, property, size, maxlenght, required and immediate. <tr jsfid="classpath*:org/apache/shale/usecases/symbols/inputTextWidget.html" label="First Name:" property="firstName" size="20" maxlength="30" required="true" immediate="false"/> The "org/apache/shale/usecases/symbols/inputTextWidget.html" template is used for layout. It's bound to some base XML config data. <tr> <td><label jsfid="widgetsLabel">Mock Label:</label></td> <td><input jsfid="widgetsText" type="text"/></td> <td><span jsfid="widgetsMessage">Mock Message</span><td> </tr> The base config definitions are defined in "WEB-INF/clay-symbols-config.xml" <component jsfid="widgetsLabel" extends="baseLabel"> <attributes> <set name="value" value="@label" /> <set name="for" value="@property" /> </attributes> </component> <component jsfid="widgetsText" extends="inputText" id="@property"> <attributes> <set name="value" value="[EMAIL PROTECTED]@property}"/> <set name="size" value="@size" /> <set name="maxlength" value="@maxlength" /> <set name="required" value="@required" /> <set name="immediate" value="@immediate"/> </attributes> </component> <component jsfid="widgetsMessage" extends="baseMessage" > <attributes> <set name="for" value="@property" /> </attributes> </component> > Thanks, > Rich Gary > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] >