Radio box dentro de datatable - JSF

Alguma alma bondosa saberia me dizer como faço para selecionar uma linha de uma DataTable, preferencialmente com Radio Box?ô coisa engessada, tá 10 a 0 pro RadioBox por enquanto…
Grata
=**

seja mais clara manda ai o codigo da tua pagina jsf blz
vlw

[code] <h:dataTable value="#{simpleTreeBean.funcsPerfil}"
var=“item”>
<h:column>
<f:facet name=“header”>
<h:outputText value=“Nome Funcionalidade”/>
</f:facet>

            <h:selectOneRadio value  ="#{item.nomeFuncionalidade}" />
                 <f:selectItems value="#{item.nomeFuncionalidade}"/>

           </h:column>
           <h:column>
              <f:facet name="header">
                 <h:outputText value="Nome Funcionalidade"/>
              </f:facet>
              <h:outputText value="#{item.nomeFuncionalidade}"/>
           </h:column>
        </h:dataTable>

[/code]

Eu queria poder selecionar uma linha dessa tabela gerada

ah agora entendi oQ vc quer fazer…
tive Q fazer algo parecido pra um sistema Q to desenvolvendo agora mas cm um detalhe…
eu keria selecionar uma linha ou mais entendeu… ai usei o h:selectOneCheckBox…
vc ker selecionar apenas uma de cadas vez ou pod mais de uma…

ainda nao me deparei cm ece cenario de selecionar apenas uma linha d cada vz entendeu…

c puder selecionar mais d uma t mando o codigo Q fiz aki cm o h:selectOneCheckBox… blz
vlw

primeiro você tem que criar um “grupo” referente ao teu radioButton, ou seja:

<t:selectOneRadio id="meuRadio" layout="spread" value="#{meuBean.algumaPropriedade}"> <t:selectItens var="objeto" value="#{meuBean.listaQueVaiSerUsadaNoDataTable}" itemLabel="#{objeto.textoProTeuRadio}" itemValue="#{objeto.idOuOUtraCoisaPraIdentificarEle}"/> </t:selectOneRadio>

depois no dataTable, você faria assim:

<t:dataTable value="#{meuBean.listaQueVaiSerUsadaNoDataTable}" var="objeto" indexRowVar="linhaAtual"> <t:column> <t:radio for="meuRadio" index="#{linhaAtual}" /> </t:column> </t:dataTable>

;D

ok, mas isso é tomahawk ou algo do tipo? em JSF puro dá pra fazer isso?

JSF puro eu não sei, o mesmo é muito limitado

mas por que não utilizar tomahawk?

pq to usando rich-faces já…
ate tentei o tomahawk, mas o rich serviu melhor pra mim
eu consegui de uma forma, digamos bizarra…
nao sei se é gambiarra ou lado negro da força
hahahahahaha
bjos , queridos e thanks for all the fish

mas o tomahawk não substitui o Richfaces

ambos se complementam :stuck_out_tongue:

mesmo assim, poderia você postar a tua solução pro pessoal ver?

valeu

EDIT: não diga gambiarra, diga “workaround”, fica mais bonito hahaha



<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<html>
  <table>
<f:view>
      <head>
         <link type="text/css" rel="stylesheet" href="css/tree.css"/>

      </head>
          <script type="text/javascript">
            	    function selectOne(form, button)
	    {
			turnOffRadioForForm(form);
			button.checked = true;
	     }
	
	    function turnOffRadioForForm(form)
	    {
		for(i=0; i<form.elements.length; i++)
            {
	
			if(form.elements[i].type=='radio')
			{
				form.elements[i].checked = false;
	            }
	      }
	     }
            
            
            
            
            
            
            
            
            </script>
         <body>
             <body>
       <h:form>
       
         
               <h:selectOneMenu  value="#{simpleTreeBean.perfilSelecionado}">
                  <f:selectItems value="#{simpleTreeBean.perfis }"/>
               </h:selectOneMenu>
               
         
            <table>
            <tr>
            <td>
       
               <td>
                 <a4j:commandButton styleClass="Botao" value="Ver detalhes do perfil" onclick="javascript:Richfaces.showModalPanel('MostrarDetalhesPerfil',{width:600, top:200})" action="#{simpleTreeBean.MostrarDetalhesPerfil}" reRender="formularioDetalhes" />
               </td>
          
                 </tr>
                 </table>
       

      </h:form><rich:modalPanel/><rich:modalPanel id="MostrarDetalhesPerfil"    >
                <f:facet name="header">
                    <h:outputText value="Detalhes do Perfil"/>
                    
                </f:facet>
                <f:facet name="controls">
                    <f:verbatim>
                        <center>
                            Por favor, preencha todos os campos!
                            <br/>
                            <br/>
                            <br/>
                            <br/>
                            <a href="javascript:Richfaces.hideModalPanel('MostrarDetalhesPerfil')">Fechar
                                                                                          Janela</a>
                        </center>
                    </f:verbatim>
                </f:facet>
               
            <h:form id="formularioDetalhes">   
                  <h:dataTable value="#{simpleTreeBean.funcsPerfil}" var="item" binding="#{simpleTreeBean.table}">
                    
                     <h:column>
                        <f:facet name="header">
                           <h:outputText value="Id"/>
                        </f:facet>
                       
               <h:selectOneRadio  value="#{simpleTreeBean.funcSelecionada}"  onclick="selectOne(this.form, this)" valueChangeListener="#{simpleTreeBean.test}"  >
                  <f:selectItems value="#{item.funcPerfil}"/>
               </h:selectOneRadio>
                
                    </h:column> 
                      
                         </h:dataTable>
                     <a4j:commandButton value="Mostrar Detalhes Funcionalidade " action="#{simpleTreeBean.MostrarDetalhesFuncionalidade}" onclick="javascript:Richfaces.showModalPanel('MostrarDetalhesFuncionalidade',{width:600, top:200})"/>              
                           </h:form>
                           
                         
                  
        </rich:modalPanel>
        
        
        
        
        
        
      
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        </body>
   </f:view>

   </td>
    
    </tr>
    
  
   </table> 

</html>


  






  public void test(ValueChangeEvent event){

        setSelectedItem((Funcionalidade)getTable().getRowData());
    }

quem não usa modalPanel, ignore o modalPanel…

Obs : item.funcPerfil é uma gambiarra, uma função que retorna uma ArrayList com a própria função…o Mais importante nesse codigo sao o Java Script e essa função

Nao sei pq cargas dágua, sempre que ele seleciona a ultima linha, ele pega o penultimo valor… se me descobrirem pq, me digam…

Beleza Leozin. Tive dando uma olhada na sua possível solução para o selectOneRadioButton com DataTable. E tentei implementar, porém como sou iniciante com jsf gostaria de reabrir este post e pedir um help por gentileza. O erro retornado é o seguinte:

[code]# 23/02/2011 00:22:06 com.sun.facelets.FaceletViewHandler handleRenderException

SEVERE: Error Rendering View[/privado/unidademovel/consultardisponibilidade.xhtml]

java.lang.IllegalStateException: Could not find component ‘meuRadio’ (calling findComponent on component ‘mainForm:Teste:defaultList:0:_id102’)

[/code]

Este é o meu código:

<ui:define name="blocoLista">
			<h:form id="Teste">
				<t:selectOneRadio id="meuRadio" layout="spread"
					value="#{unidadeMovelMBean.nome}">
					<t:selectItems var="objeto" value="#{unidadeMovelMBean.dataModel}"
						itemLabel="#{objeto.nome}" itemValue="#{objeto.id}" />
				</t:selectOneRadio>

				<adv:dataTable id="defaultList" width="483" rows="10"
					style="width: 100%;" value="#{unidadeMovelMBean.dataModel}"
					var="row" columnsWidth=",,,,">

					<advtag:dataTableHeaders>
						<ui:define name="headers">
							<advtag:dataTableColumn label="" column="radio" />
							<advtag:dataTableColumn label="UMO/EMO" column="nome" />
							<advtag:dataTableColumn label="Unidade Sede" column="unidadeSede" />
							<advtag:dataTableColumn label="Servico" column="tempoMontagem" />
							<advtag:dataTableColumn label="Situacao" column="situacao" />
						</ui:define>
					</advtag:dataTableHeaders>

					<h:column>
						<t:radio index="#{linhaAtual}" for="meuRadio"></t:radio>
					</h:column>

					<advtag:dataTableColumn value="#{row.nome}" />
					<advtag:dataTableColumn value="#{row.unidadeSede.nome}" />
					<h:column>
						<rich:dataList id="listaServicos" value="#{row.servicos}"
							var="servico">
							<h:outputText value="#{servico.nome}" />
						</rich:dataList>
					</h:column>
					<advtag:dataTableColumn value="#{row.situacao.rotulo}" />

				</adv:dataTable>

				<advtag:dataScroller for="defaultList"
					dataModel="#{unidadeMovelMBean.dataModel}" />
			</h:form>
		</ui:define>

Se puder dar uma força e ver a possível causa do erro ficarei muito grato.