Como listar dados jsf?

E então pessoal peguei esse codigo no site do primefaces do data table:

<p:fieldset legend="Dados do cliente">  
        <p:dataTable id="availableCars" var="car" value="#{}">  
            <p:column style="width:20px">  
                <h:outputText id="dragIcon"  
                    styleClass="ui-icon ui-icon-arrow-4" />  
                <p:draggable for="dragIcon" revert="true" />  
            </p:column>  
  
            <p:column headerText="Nome">  
                <h:outputText value="#{Cliente.nomeCliente}" />  
            </p:column>  
  
            <p:column headerText="Idade">  
                <h:outputText value="#{car.year}" />  
            </p:column>  
  
            <p:column headerText="Cpf">  
                <h:outputText value="#{car.manufacturer}" />  
            </p:column>  
  
            <p:column headerText="RG">  
                <h:outputText value="#{car.color}" />  
            </p:column>  
        </p:dataTable>  

queria saber como fazer pra ele listar os dados, ja tenho um metodo que lista.
duvidas onde coloco meu metodo listar? o q tenho q alterar ai

[quote=adam_sandler]E então pessoal peguei esse codigo no site do primefaces do data table:

<p:fieldset legend="Dados do cliente">  
        <p:dataTable id="availableCars" var="car" value="#{}">  
            <p:column style="width:20px">  
                <h:outputText id="dragIcon"  
                    styleClass="ui-icon ui-icon-arrow-4" />  
                <p:draggable for="dragIcon" revert="true" />  
            </p:column>  
  
            <p:column headerText="Nome">  
                <h:outputText value="#{Cliente.nomeCliente}" />  
            </p:column>  
  
            <p:column headerText="Idade">  
                <h:outputText value="#{car.year}" />  
            </p:column>  
  
            <p:column headerText="Cpf">  
                <h:outputText value="#{car.manufacturer}" />  
            </p:column>  
  
            <p:column headerText="RG">  
                <h:outputText value="#{car.color}" />  
            </p:column>  
        </p:dataTable>  

queria saber como fazer pra ele listar os dados, ja tenho um metodo que lista.
duvidas onde coloco meu metodo listar? o q tenho q alterar ai[/quote]

tens q preencher o value do dataTable. Ele tem q ser um bean q implemente serializable . A variável poderá ser um List (ArrayList).

<p:dataTable var="car" value="#{seuBean.VarListl}">  
    <p:column headerText="Model">  
        <h:outputText value="#{car.model}" />  
    </p:column>  

</p:dataTable>

deu certo man, como faço para listar os contatos de clientes, sabendo que em Cliente tem uma lista de contatos…

Tentei var.contatos.celContato

mas da erro.
me ajuda?

hum … .tente criar uma datatable dentro da datatable.

nao entendi, meu datatable funciona quando uso a var = cli

cli.nomeCliente

mas agora quero carregar a lista de contatos.

eu tenho uma lista de contatos ja no BD, ela esta reiacionada com cliente, como faço?

tente fazer o seguinte :
em vez de h:outputText
<p:column headerText=“Nome”>
<h:outputText value="#{Cliente.nomeCliente}" />
</p:column>

coloque outro (no lugar do outputtext ) datatable com o value para contatos (cliente.contatos)

dentro desse 2° datatable coloque os campos do contato no value (cliente.contato.nome; cliente.contato.endereco ,etc) .

Aqui tem um exemplo completo: http://uaihebert.com/?p=1414

[quote=alexmonassa]tente fazer o seguinte :
em vez de h:outputText
<p:column headerText=“Nome”>
<h:outputText value="#{Cliente.nomeCliente}" />
</p:column>

coloque outro (no lugar do outputtext ) datatable com o value para contatos (cliente.contatos)

dentro desse 2° datatable coloque os campos do contato no value (cliente.contato.nome; cliente.contato.endereco ,etc) . [/quote]

não entendi, veja minha tabela completa:

 <p:fieldset legend="Dados do cliente">  
        <p:dataTable id="availableCars" var="cli" value="#{ClienteController.listarCliente}">  
            <p:column style="width:20px">  
                <h:outputText id="dragIcon"  
                    styleClass="ui-icon ui-icon-arrow-4" />  
                <p:draggable for="dragIcon" revert="true" />  
            </p:column>  
  
            <p:column headerText="Nome">  
                <h:outputText value="#{cli.nomeCliente}" />  
            </p:column>  
  
            <p:column headerText="Renda">  
                <h:outputText value="#{cli.rendaCliente}" />  
            </p:column>  
  
            <p:column headerText="Cpf">  
                <h:outputText value="#{cli.cpfCliente}" />  
            </p:column>  
  
            <p:column headerText="RG">  
                <h:outputText value="#{cli.rgCliente}" />  
            </p:column>  
        </p:dataTable>  
    </p:fieldset>  

apenas quero listar os dados contato agora, o mesmo são uma lista de cliente.

Cara, tem diversas maneiras.
Você pode colocar um p:rowExpansion na sua data table:


<p:dataTable id="tabelaClientes" var="cli" value="#{ClienteController.listarCliente}">
   <p:column style="width:2%">  
           <p:rowToggler />  
   </p:column>  
    ....suas  colunas
      <p:rowExpansion>  
           <p:dataList  id=listaContatos" value="#{cli.contatos}" var="contato">  
                    <h:outputText value="#{contato.atributo1}" /> 
            </p:dataList> 
       </p:rowExpansion>
</p:dataTable>  

Você pode também colocar uma coluna com um botão/link/whatever para mostrar os contatos:

[code]
<p:dataTable id=“tabelaClientes” var=“cliente” value="#{ClienteController.listarCliente}">
…suas colunas…
<p:column >
<p:commandLink update=":contatosForm" onclick=“dialogContato.show();” rendered="#{not empty cliente.contatos}">
<h:outputText value=“Ver Contatos” />
<f:setPropertyActionListener target="#{ClienteController.clienteSelecionado}" value="#{cliente}" /> //não esqueça do get/set pra clienteSelecionado no seu Controller.
</p:commandLink>
</p:column>
</p:dataTable>

<p:dialog header=“Contatos” id=“dialogContatoID” widgetVar=“dialogContato” modal=“true” draggable=“false” resizable=“false” >
<h:form id=“contatosForm”>
<p:dataList id=listaContatos" value="#{ClienteController.clienteSelecionado.contatos}" var=“contato”>
<h:outputText value="#{contato.atributo1}" />
</p:dataList>
</h:form>
</p:dialog>[/code]

Pode criar um treetable, exibir os cotatos em uma linha normal e por ai vai…
Veja a que fica melhor para o usuário e não fique pesada no sistema.

tava lendo ainda o artigo q o Herbert mandou ainda nao terminei.
Bem tenta assim

<p:column>
<p:dataTable
value="#{cli.contatos}"
var=“conts”>
<p:column>#{conts.name}</p:column>
</p:dataTable>
</p:column>

O resto normal .

qq coisa avisa ai.

[quote=ErickRAR]Cara, tem diversas maneiras.
Você pode colocar um p:rowExpansion na sua data table:


<p:dataTable id="tabelaClientes" var="cli" value="#{ClienteController.listarCliente}">
   <p:column style="width:2%">  
           <p:rowToggler />  
   </p:column>  
    ....suas  colunas
      <p:rowExpansion>  
           <p:dataList  id=listaContatos" value="#{cli.contatos}" var="contato">  
                    <h:outputText value="#{contato.atributo1}" /> 
            </p:dataList> 
       </p:rowExpansion>
</p:dataTable>  

.[/quote]

nao entendi, em qual coluna vai se alocar? quero q em uma coluna especifica liste contatos.
ex:
<p:column headerText=“Celular”>
<h:outputText value="#{cli.contatos.celContato}" />
</p:column>

nessa coluna ai, quero colocar o cel do contato. mas se colocar assim da esse erro:

For input string: “celContato”

como aplicar o <p:rowExpansion> na coluna?

no exemplo q vc disse fica fora das colunas, eu fiz e nada ocorre.

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

Ainda nao entendi, isso é outra tabela diferente, tenho que usar ela? se sim, ainda nao entendi como listar a lista.

Mas eu quero usar a tabela que ja estou usando e nao esta.

??? alguem pf?