o problema é que ao selecionar, consigo selecionar mais de um, não fazendo sentido a questão do radio...
Vejam se isso é o bastante.
A ideia é que no dataTable possa haver um radiobutton, onde através dele pudesse submeter um receptor a um atendimento:
<rich:popupPanel id="modalPanelReceptor" modal="false" width="600"
moveable="false">
<f:facet name="header">
<h:outputText value="Defina o Receptor"></h:outputText>
</f:facet>
<f:facet name="controls">
<h:outputLink value="#" style="text-decoration:none;"
onclick="#{rich:component('modalPanelReceptor')}.hide(); return false;">X</h:outputLink>
</f:facet>
<rich:dataTable value="#{atendimentoBean.listaReceptores}"
sortMode="single" var="_receptor" style="width: 100%;"
binding="#{atendimentoBean.uiDataTable}"
noDataLabel="Não existem receptores cadastrados." rowKeyVar="index">
<rich:column width="40%">
<f:facet name="header">
<h:outputText value="Selecione" />
</f:facet>
<h:se
><h:selectOneRadio onclick="dataTableSelectOneRadio(this);"
valueChangeListener="#{atendimentoBean.setReceptorSelecionado}"
value="#{atendimentoBean.atendimentoEdicao.receptor}"
converter="receptorConverter">
<a4j:ajax></a4j:ajax>
<f:ajax execute="@this" render="@form"></f:ajax>
<f:selectItem itemValue="#{_receptor}">
</f:selectItem>
</h:selectOneRadio>
</rich:column>
<rich:column width="40%">
<f:facet name="header">
<h:outputText value="Nome do receptor" />
</f:facet>
<h:outputText value="#{_receptor.nomeReceptor}"></h:outputText>
</rich:column>
<rich:column width="25%">
<f:facet name="header">
<h:outputText value="Tipo sanguíneo do receptor" />
</f:facet>
<h:outputText value="#{_receptor.tipoSanguineo}"></h:outputText>
</rich:column>
<rich:column width="25%">
<f:facet name="header">
<h:outputText value="Tipo Hemoderivado do receptor" />
</f:facet>
<h:outputText value="#{_receptor.tipoHemo}"></h:outputText>
</rich:column>
</rich:dataTable>
<a4j:commandButton value="OK"
onclick="#{rich:component('modalPanelReceptor')}.hide(); return
false;" />
</rich:popupPanel>
e através disto pudesse obtê-lo:
public void setReceptorSelecionado(ValueChangeEvent event) {
receptorSelecionado = (Receptor) uiDataTable.getRowData();
System.out.println(receptorSelecionado);
listaReceptores = new ArrayList<Receptor>();
listaReceptores.add(receptorSelecionado);
}
<h:outputScript name="modal.js" library="js" target="head" />
function dataTableSelectOneRadio(radio) {
var radioId = radio.name.substring(radio.name.lastIndexOf(':'));
for ( var i = 0; i < radio.form.elements.length; i++) {
var element = radio.form.elements[i];
if (element.name.substring(element.name.lastIndexOf(':')) == radioId) {
element.checked = false;
}
}
radio.checked = true;
}