6
respostas

Dificuldades ao percorrer uma lista

seguinte preciso percorrer uma lista para pode plotar as informações dessa mesma lista em uma tabela porem não estou conseguindo percorrer de forma correta e esta plotando apenas object na minha tabela o codigo que estou tentando usar para percorrer é essa abaixo.

console.log("${listaHorarios}");
                listaHorariosSpringArray = "${listaHorarios}";
                listaHorariosSpringArray = listaHorariosSpringArray.replace(
                        "]", "");
                listaHorariosSpringArray = listaHorariosSpringArray.replace(
                        "[", "");
                listaHorarios = listaHorariosSpringArray.split(",");

                $.each(listaHorarios, function(k, v) {
                    $("#listaHorarios").append('data-field="' + v + '");
                    console.log($.trim(v));
                    console.log($.trim(k));
                });
                console.log(listaHorariosSpringArray);

o listaHorarios esta vindo do controller ja testei se os dados estao chegando e esta ok, o problema esta em percorrer essa lista e pegar as informações para plotar na tabela de forma correta.

6 respostas

Wesley, bom dia!

Aparentemente o código está correto, mas não entendi esse append que você está fazendo.

Você está tentando escrever um atributo de alguma tag? Esse append não deveria ter o html de alguma tag? Ou apenas o valor?

como é a saida desta linha?

console.log(listaHorariosSpringArray);

E como seria a saída desta linha, logo antes do $.each?

console.log(listaHorarios)

Bom dia Adriano, então a minha duvida esta em como passar o conteúdo da lista para a minha tabela e no append, o pensamento foi declarar o atributo e deixar o valor dinâmico , o curioso nesse meu problema é que algumas informações da lista foram plotas como id e nome , porem os campos da lista que tem como tipo Local Time e Local Date não foram inseridos então minha duvida fica será que devo percorrer essa lista de alguma outra forma por conta dos tipos de dados ?

Wesley, não entendi bem essa questão de "Local Time" e "Local Date".

De qualquer forma, a alteração de atributo está sendo feita de forma errada.

No seu caso seria:

$.each(listaHorarios, function(k, v) {
                    $("#listaHorarios").attr('data-field', v);
                    console.log($.trim(v));
                    console.log($.trim(k));
                });

O código acima modifica o atributo existente, agora sim ele muda o atributo, mas com certeza ainda não atende o que você está querendo, pois ele vai mudar apenas o atributo do objeto informado, no caso é $("#listaHorarios").

Você deveria fazer uma das opções:

1) Adicionar uma nova linha a cada iteração, vou colocar um exemplo com p, mas mude para o que você precisar:

$.each(listaHorarios, function(k, v) {
               var novoItem = $('<p>Texto aqui</p>');
                           novoItem.attr('data-field', v);

                    $("#listaHorarios").append( novoItem );
                    console.log($.trim(v));
                    console.log($.trim(k));
                });

2) Editar uma lista de itens já existentes. Por exemplo, vamos supor que seu array traga uma lista, na mesma ordem de elementos div já existentes no seu html.

Podemos pegar um a um na mesma ordem, com o eq, veja:

$.each(listaHorarios, function(k, v) {
                    $("#listaHorarios").find('div').eq(k).attr('data-field', v);
                    console.log($.trim(v));
                    console.log($.trim(k));
                });

O trecho $("#listaHorarios").find('div'), pega uma lista de itens div dentro de #listaHorarios, e o eq indica qual item será selecionado, ou seja, item 0, 1, 2, etc...

E por fim, modifica o atributo do elemento.

Bom Adriano para que você entenda um pouco melhor o cenário, essa é tabela que preciso plotar as informações

idDataEntradaSaida AlmoçoVolta AlmoçoSaidaBanco PositivoBanco NegativoUsuarioLicença

Beleza, mas coloque também o que você possui na variável listaHorarios, antes de entrar no foreach.

Assim podemos dizer melhor o que deve ser feito.

entao eu crio a lista assim List listaHorarios = new ArrayList<>();

List listaCompleta = folhaService.findFetchAll();

for(Folha listaHoras : listaCompleta){

listaHorarios.add(listaHoras.getData().toString()); listaHorarios.add(listaHoras.getEntrada().toString()); listaHorarios.add(listaHoras.getSaidaAlmoco().toString()); listaHorarios.add(listaHoras.getVoltaAlmoco().toString()); listaHorarios.add(listaHoras.getSaida().toString()); }

model.addAttribute("listaHorarios",listaHorarios);

antes de tentar passar para a view