JSF - Recuperar linha selecionada

Galera, estou com uma duvida…

Tenho minha tabela, eu clico na linha e clico em um botão, mas não consigo trazer os itens dessa linha…

[code]

<ui:composition template="/pages/template/templatedefault.xhtml"
xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:f=“http://java.sun.com/jsf/core
xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:p=“http://primefaces.org/ui”>

<ui:define name="conteudo">
	<h:form prependId="false" id="form">
		<div id="listaClienteDIV"> 
			<p:panel id="painel-listar" header="Lista de Clientes"> <!-- selection="#{cadClientes.b}" -->
			    <p:dataTable id="tabela" var="b" value="#{cadClientes.lista}" rowKey="#{b.nome}" selectionMode="single"  
			               scrollable="true" scrollWidth="615" scrollHeight="200" >
			   		 <f:facet name="header">Selecione a linha e clique em "Ver" para detalhes.</f:facet>
			   		 
			   		 <p:column headerText="Nome">
			   		 	  <h:outputText value="#{b.nome}"/>
			   		 </p:column>
			   		 <p:column headerText="Nascimento">
			   		 	  <h:outputText value="#{b.nascimento}"/>
			   		 </p:column>
			   		 <p:column headerText="RG">
			   		 	  <h:outputText value="#{b.rg}"/>
			   		 </p:column>
					 <p:column headerText="CPF/CNPJ">
			   		 	  <h:outputText value="#{b.cpfCnpj}"/>
			   		 </p:column>				   		 
			   		 <p:column headerText="Endereço">
			   		 	  <h:outputText value="#{b.endereco}"/>
			   		 </p:column>
			   		 <p:column headerText="Numero">
			   		 	  <h:outputText value="#{b.numero}"/>
			   		 </p:column>
			   		 <p:column headerText="CEP">
			   		 	  <h:outputText value="#{b.cep}"/>
			   		 </p:column>
			   		 <p:column headerText="Bairro">
			   		 	  <h:outputText value="#{b.bairro}"/>
			   		 </p:column>
			   		 <p:column headerText="Cidade">
			   		 	  <h:outputText value="#{b.cidade}"/>
			   		 </p:column>
			   		 <p:column headerText="Estado">
			   		 	  <h:outputText value="#{b.estado}"/>
			   		 </p:column> 
			   		 <p:column headerText="Telefone Res.">
			   		 	  <h:outputText value="#{b.telefoneRes}"/>
			   		 </p:column>
			   		 <p:column headerText="Telefone Com.">
			   		 	  <h:outputText value="#{b.telefoneCom}"/>
			   		 </p:column>
			   		 <p:column headerText="Celular">
			   		 	  <h:outputText value="#{b.telefoneCel}"/>
			   		 </p:column>
			   		 
			   		 <f:facet name="footer">
			   		 <p:commandButton ajax="false" icon="ui-icon-search" immediate="true" value="Ver" action="#{cadClientes.visualizar}">
			   			<!-- 	 
			   		 	  <f:setPropertyActionListener value="#{b}" target="#{cadClientes.b}" /> não funciona =/
			   		  -->
			   		 </p:commandButton>
			   		
			   		 </f:facet>
			    </p:dataTable>
			</p:panel>
		</div>
	</h:form>
</ui:define>

</ui:composition>

			[/code]

alguem sabe como eu faço isso?! vllw =D

Existe uma classe chamada DataModel do faces. Se você utilizar um objeto dela como value da dataTable isso fica fácil.
Aí basta usar o método getRowData no managedbean e você tem o objeto da linha selecionada.

drsMachado, pode me ajudar com um problema?

Esse exemplo do primefaces mostra exatamente o que tu precisa fazer. Da uma olhada nele, se não entender avisa que posso tentar explicar. Mas o segredo o selection="#{tableBean.selectedCar}", é nessa propriedade que será setado o valor da linha selecionada.

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

drsmachado: Seria mais ou menos assim:

http://www.mkyong.com/jsf2/jsf-2-datatable-sorting-example-datamodel/

drrockenbach: Irei olhar agora =D

drrockenbach:

E como eu passo os valores para a classe do java?

Quando tu define o selectionMode=“single”, quer dizer que tu vai selecionar apenas uma linha por vez. Logo tu precisa de uma propriedade para setar o valor da linha que tu selecionar. Isso é o que vai no selection, que no caso do primefaces é selection="#{tableBean.selectedCar}".

Então não é necessário fazer anda além disso. Fazendo isso, quando tu clicar na linha, o valor será setado na propriedade selectedCar do bean.
Nota que quando o tipo do selectionMode for multiple, a única coisa que muda, é que agora a tua propriedade vai ser um array, conforme o exemplo abaixo.

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

Aqui tem um exemplo: Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate.

Mostra como fazer a selecionar um cara apertando um botão.

Existe também a opção de exibir valor ao clicar na linha da tabela, que aqui mosta: Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate