アンケートのセクションにある質問のリストを反復処理する ap:datatable があります。各質問には、複数の回答が存在する可能性があります。セクション内のすべての質問には、同じ数の潜在的な回答があります。したがって、可能な回答の数に基づいて動的な数の列を作成し、同じ radioGroup の一部として各列に selectOneRadio ボタンをレンダリングして、1 つだけを選択できるようにしたいと考えています。
ただし、ラジオ ボタンにカスタム レイアウトを使用しようとすると、同じ行で複数を選択できるため、グループとして機能しません。望ましい結果を達成するための最良の方法を知っている人はいますか?
<ui:composition>
<p:dataTable value="#{questions}" var="question"
styleClass="pro_category_table">
<f:facet name="header">
<h:outputText value="#{msg[category.categoryType.label]}"></h:outputText>
</f:facet>
<p:column headerText="#{msg['long_pro_question_intro1']}">
<h:outputText value="#{msg[question.questionTextKey]}" />
</p:column>
<p:column>
</p:column>
<p:columns value="#{category.answerChoicesForSection}" var="categoryHeader" columnIndex="i">
<f:facet name="header">
#{categoryHeader}
</f:facet>
<p:panel>
<p:selectOneRadio id="customRadio" value="#{question.selectedAnswers.answers[0]}" layout="custom"
styleClass="pro_select_one_of_many">
<p:ajax update="@(.pro_navigation_button_panel)"/>
<f:selectItems var="answer" value="#{question.validAnswers}"
itemDescription="#{msg[answer.labelKey]}"
itemValue="#{answer.value}" itemLabel=""></f:selectItems>
</p:selectOneRadio>
<p:radioButton for="customRadio" itemIndex="#{i}"></p:radioButton>
</p:panel>
</p:columns>
</p:dataTable>
</ui:composition>