I am trying to use the x:selectOneRadio component with the spread
layout. The radio button choices are rendered dynamically as part of a
dataTable. However, the setter in the backing bean is not being called
and I am getting an error in the logs:
"There should always be a submitted value for an input if it is
rendered, its form is submitted, and it is not disabled or read-only."
from HtmlRendererUtils. This method appears to be looking for a value
submitted by the x:selectOneRadio component. However, each of the
options has been rendered with a unique name and therefore is not being
found. Is this correct? As only one value can be submitted, surely the
names should all be the same?
The code which causes this is:
<h:dataTable value="#{question.answers}" var="answer" style="width:100%">
<f:facet name="header">
<h:panelGroup rendered="#{question.typeBoolean}">
<x:selectOneRadio id="radioChoice"
value="#{question.booleanResponse}" required="true"
rendered="#{question.typeOne}" disabled="#{!handler.poll.updatable}"
layout="spread">
<f:selectItems value="#{question.answerOptions}"/>
</x:selectOneRadio>
<x:selectManyCheckbox id="checkChoice"
value="#{question.responses}" rendered="#{question.typeMany}"
disabled="#{!handler.poll.updatable}" layout="spread">
<f:selectItems value="#{question.answerOptions}"/>
</x:selectManyCheckbox>
</h:panelGroup>
</f:facet>
<h:column>
<x:radio for="radioChoice" index="#{answer.answerNumber - 1}"
rendered="#{question.typeOne}"/>
<x:checkbox for="checkChoice" index="#{answer.answerNumber -
1}" rendered="#{question.typeMany}"/>
</h:column>
</h:dataTable>
This code worked correctly with the RI.
Peter