>Hello again,
>
>I'm trying to use the Tomahawk t:selectOneRadio and t:radio components
>to use the spread layout feature. Here's the clay-config.xml
>configuration for my component definitions:
>
> <component jsfid="selectPaymentType" extends="t:selectOneRadio">
> <attributes>
> <set name="id" value="paymentType" />
> <set name="value" value="[EMAIL PROTECTED]" />
> <set name="layout" value="spread" />
> </attributes>
> <element renderId="1" jsfid="selectItem">
> <attributes>
> <set name="itemLabel" value="Pay with a credit card" />
> <set name="itemValue" value="1" />
> </attributes>
> </element>
> <element renderId="2" jsfid="selectItem">
> <attributes>
> <set name="itemLabel" value="Pay with a certificate" />
> <set name="itemValue" value="2" />
> </attributes>
> </element>
> </component>
>
> <component jsfid="selectPaymentTypeCreditCardOption" extends="t:radio">
> <attributes>
> <set name="for" value="paymentType" />
> <set name="index" value="0" />
> </attributes>
> </component>
>
> <component jsfid="selectPaymentTypeCertificateOption" extends="t:radio">
> <attributes>
> <set name="for" value="paymentType" />
> <set name="index" value="1" />
> </attributes>
> </component>
>
>And I'm using them on the page with:
>
> <span jsfid="selectPaymentType" />
> <span jsfid="selectPaymentTypeCreditCardOption" />
> <span jsfid="selectPaymentTypeCertificateOption" />
>
>When I try and load the page, I'm getting an IllegalStateException
>saying the "for" attribute of the t:radio component isn't set:
>
>java.lang.IllegalStateException: mandatory attribute 'for'
> at
>org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.renderRadio(HtmlRadioRen
>derer.java:85)
> at
>oThe configuration for the t:radio component looks alright (to my eyes at
>least):
>
> <component jsfid="t:radio" componentType="org.apache.myfaces.HtmlRadio">
> <attributes>
> <set name="id" bindingType="VB" />
> <set name="rendered" bindingType="VB" />
> <set name="binding" bindingType="VB" />
> <set name="enabledOnUserRole" bindingType="VB" />
> <set name="visibleOnUserRole" bindingType="VB" />
> <set name="for" bindingType="VB" />
> <set name="index" bindingType="VB" />
> </attributes>
> </component>
>
>So what am I missing?
>
Now that's at tricky one. It turns out that the exception is from the
renderering of the t:selectOneRadio component and not the t:radio.
The componentType is not correct in the clay tomahawk config file.
It was binding to the t:radio component and not the UISelectOne
sub class. They have some serious reuse here. The same renderer is
used for both components.
Try the following config change:
<component jsfid="t:selectOneRadio"
componentType="org.apache.myfaces.HtmlSelectOneRadio"
extends="baseOutput">
Gary
>Thanks,
>Rich