JSF ui:repeat e lista?

Tenho que imprimir em um xhtml o resultado de um SQL, a impressão tem que ser, como abaixo:

nome               descrição           data          valor
123 de Oliveira 4  
                   teste               01/01/2019    R$ 10,00
                   teste               01/01/2019    R$ 10,00
                   teste               01/01/2019    R$ 10,00

Total:                                               R$ 30,00

nome               descrição           data           valor 
aline              
                   teste               01/01/2019     R$ 10,00
                   teste               01/01/2019     R$ 10,00
                   teste               01/01/2019     R$ 10,00

    Total:                                            R$ 30,00

nome               descrição           data           valor 
aline1              
                   teste               01/01/2019     R$ 10,00
                   teste               01/01/2019     R$ 10,00
                   teste               01/01/2019     R$ 10,00

        Total:                                        R$ 30,00

O método retorna um List<Wrapper> e tentei usar um ui:repeat dentro de outro ui:repeat, mas não saiu como esperado.

Alguém tem alguma sugestão?

Chegou a apresentar alguma coisa? Como vc está organizando os itens na tela? Qual elemento está usando?

Olá lucastody.

Obrigado pela resposta.
Apresenta sim. Os dados são impresso, como abaixo:

nome               descrição           data          valor
123 de Oliveira     4  teste          01/01/2019    R$ 10,00
123 de Oliveira     4  teste          01/01/2019    R$ 10,00
123 de Oliveira     4  teste          01/01/2019    R$ 10,00
aline                  teste          01/01/2019    R$ 10,00
aline                  teste          01/01/2019    R$ 10,00
aline                  teste          01/01/2019    R$ 10,00
aline1                 teste          01/01/2019    R$ 10,00
aline1                 teste          01/01/2019    R$ 10,00
aline1                 teste          01/01/2019    R$ 10,00


A organização correnta seria:

nome               descrição           data          valor
23 de Oliveira  4 
                   teste          01/01/2019    R$ 10,00
                   teste          01/01/2019    R$ 10,00
                   teste          01/01/2019    R$ 10,00

Total:                                             R$ 30,00

nome               descrição           data          valor
aline 
                   teste          01/01/2019    R$ 10,00
                   teste          01/01/2019    R$ 10,00
                   teste          01/01/2019    R$ 10,00

Total:                                             R$ 30,00

nome               descrição           data          valor
aline1
                   teste          01/01/2019    R$ 10,00
                   teste          01/01/2019    R$ 10,00
                   teste          01/01/2019    R$ 10,00

Total:                                             R$ 30,00

Eh, vc vai ter que fazer uma jogada com colspan e rowspan de acordo com os registro para cada nome.

Olá lucastody.

Pode ser uma solução.

Segue parte do código para você ter uma ideia melhor.

public List<Wrapper> listar(Integer id, Date dtInicio, Date dtFim) {
                             
       List<Wrapper> r = new ArrayList<Wrapper>();
    		
       .
       .
       .
       r = Wrapper.listFromArrayList(que.getResultList(), 
    					                          "id",
    					                          "nome",
    					                          "descricao",
    					                          "data",
    					                          "valor");
    		
        return r;
    		
}

public String pesquisar() {
		
        `List<Wrapper> lista = listar(id, dtInicio, dtFim);`
		
         return null;
}

O retorno do metodo listar é:

{"id": 1, "nome": "123 de Oliveira 4", "descricao": "teste", "data": "01/01/2019", "valor": 10.00}
{"id": 2, "nome": "123 de Oliveira 4", "descricao": "teste", "data": "01/01/2019", "valor": 15.00}
{"id": 3, "nome": "123 de Oliveira 4", "descricao": "teste", "data": "01/01/2019", "valor": 20.00}
{"id": 4, "nome": "aline", "descricao": "teste", "data": "01/01/2019", "valor": 10.00}
{"id": 5, "nome": "aline", "descricao": "teste", "data": "01/01/2019", "valor": 20.00}
{"id": 6, "nome": "aline", "descricao": "teste", "data": "01/01/2019", "valor": 30.00}
{"id": 7, "nome": "aline1", "descricao": "teste", "data": "01/01/2019", "valor": 10.00}
{"id": 8, "nome": "aline1", "descricao": "teste", "data": "01/01/2019", "valor": 20.00}
{"id": 9, "nome": "aline1", "descricao": "teste", "data": "01/01/2019", "valor": 30.00}

XHTML:

`<h:form>`
	           
        <c:forEach items="#{lista}" var="item">
		          	
	    <p>nome: #{item.nome}</p><br/>
	    <c:forEach items="${item.innerList}" var="item_s" from="0" to="${item.size()}" varStatus="itemstatus">
		       <p>${item_s[itemstatus.index]}</p><br/>
	    </c:forEach>
		          	
		          			
        </c:forEach>
		          
</h:form>

A variável item, no forEach, contém cada elemento da lista:

{"id": 1, "nome": "123 de Oliveira 4", "descricao": "teste", "data": "01/01/2019", "valor": 10.00}

O segundo forEach não funciona.

Bom, vi que vc não está usando uma estrutura em tabela para organizar os dados. Recomendo que pense numa solução utilizando uma tabela (vc vai precisar do colspan e rowspan).

E como vc está montando esse atributo: innerList do item?

Estou usando uma tabela. Achei melhor retirar do post.
O innerList é do item.

Achei uma solução melhor.

Criei uma classe, como abaixo:

public class TListar{
      campos

     Gets
    
     Sets

}

O metodo que retornava um List agora retorna List.
No metodo Listar manipulo o resultado da sql e coloco em cada variável na classe que criei.

Abrigado pela ajuda.