selectOneRadio dentro de um dataTable

8 respostas
marcos4ft

Pessoal, eu tenho um dataTable, e dentro dele tenho um selectOneRadio:

<rich:dataTable rowKeyVar="num" id="rdtPerguntasAnamneseDirigida" value="#{anamneseDirigida.lstPerguntas}" var="pergunta" border="1" cellpadding="0" cellspacing="0" 
        				width="99%" onRowMouseOver="this.style.backgroundColor='#FAF0E6'" onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" >
              <rich:column>
                       <h:selectOneRadio styleClass="center" binding="#{anamneseDirigida.naoSei}" id="slradioEscolhaNaoSei" value="#{pergunta.resposta}">
			<f:selectItem id="siNaoSeiAtivo" itemValue="NS" itemLabel="Não sei"/>
                      <f:selectItem id="siSimAtivo" itemValue="SI" itemLabel="Sim"/>
			<f:selectItem id="siNaoAtivo" itemValue="NA" itemLabel="Não"/>
					
			<a4j:support event="onchange" action="#{anamneseDirigida.marcaEscolha}">
				<f:param value="???????" name="escolha"></f:param>
				<f:param value="#{pergunta.id}" name="id"></f:param>
			</a4j:support>
		</h:selectOneRadio>
            </rich:column>
        </rich:dataTable>

eu preciso recuperar o value do radio com a opção escolhida

<f:param value="???????" name="escolha"></f:param>

O problema é que nao to conseguindo pegar o valor, ja tentei:

<f:param value="#{anamneseDirigida.naoSei}" name="escolha"></f:param>
<f:param value="#{anamneseDirigida.naoSei.value}" name="escolha"></f:param>
<f:param value="#{pergunta.resposta}" name="escolha"></f:param>

Mas nenhum funciona, vem sempre null ou vazio.

Alguem sabe como que faço???

8 Respostas

S

Se conseguir me ajuda, pelo amor de Deus:

D

Não pode ser um checkbox ao invés de um radio? Por que eu sei que o check box tu pode associar direto a uma propriedade Boolean, ai ele altera automaticamente para true ou false, conforme o que for marcado.

S

Tenho as duas situações…
Mas acho que a lógica é a mesma…
e estou perdido a resolver as duas.

S

Usei um wrapper para tal para 2 entidades
Passo-as de forma a recebê-las nas listas, elas recebem os seus respectivos objetos.

D

Pelo que vi tu está utilizando richfaces. Não conheço. Só conheço um pouco de primefaces. Segue abaixo um exemplo de radio em primefaces.

http://www.primefaces.org/showcase-labs/ui/selectOneRadio.jsf

Tudo o que precisa fazer, é utilizar da forma como está nesse exemplo, colocando dentro do datatable.

S

Até aí não é difícil fazer, porém, é uma lista de uma entidade, que será submetida em outra, e a forma de fazê-lo é de outra maneira, por isso a dúvida…
digamos que seja uma submissão no banco duas vezes…

S

drrockenbachm, tentei sua sugestão, esta seria mesmo a idéia, porém, pelo fato de estar em uma dataTable muda tudo.
porém, agradeço muito a sua ajuda.

D

Alterei um código meu, para te mostrar como exemplo.

<m:editableDataTable id="tabelaTiposAjustes" value="#{controller.tiposAjustes}"
							selection="#{controller.tiposAjustesSelected}"
							actionController="#{controller}"
			           		actionMethodExcluir="excluirTipoAjuste"
							updateExcluir=":formForm:tabView:"
							updateAdicionar=":formForm:tabView:"
							actionMethodIncluir="adicionarTipoAjuste" >

					<m:editableColumnTable titleColumn="#{recursos.codigo}" columnId="testeColumn">					
						<h:outputText value="Options: " />  
        				<p:selectOneRadio id="options" value="#{item.teste}">  
				            <f:selectItem itemLabel="Option 1" itemValue="1" />  
				            <f:selectItem itemLabel="Option 2" itemValue="2" />  
				            <f:selectItem itemLabel="Option 3" itemValue="3" />  
				        </p:selectOneRadio>
					</m:editableColumnTable>
					
						<m:editableColumnTable titleColumn="#{recursos.codigo}" columnId="codigoColumn">
							<h:outputText fieldId="textCodigo" value="#{item.codigo}"  />
						</m:editableColumnTable>
						
						<m:editableColumnTable titleColumn="#{recursos.descricao}" columnId="descricaoColumn">
							<m:textfield fieldId="textDescricao" value="#{item.textoAjuste}" renderedlabel="false"/>
						</m:editableColumnTable>
					</m:editableDataTable>

Só precisa apontar a propriedade do seu bean. value="#{item.teste}"
Qualquer coisa posta aqui o teu código que te ajudo a montar.

Edit: Um detalhe, esse meu datatable não é o padrão do primefaces, é um datatable customizado, então se copiar ele não vai funcionar no seu caso. Mas enfim, o que importa para ti é a parte do radio.

Criado 8 de junho de 2010
Ultima resposta 11 de dez. de 2012
Respostas 8
Participantes 3