forEach

8 respostas
tluisrs

Olá gente,

Eu procurei sobre isso no forum e não encontrei. Seguinte, eu tenho 3 vetores de strings na minha classe, são eles:

fileListDiff
fileListDiffU
fileListDiffV

Estou tentando escrever uma página usando JSLT e me deparei com o seguinte problema: Em JAVA eu faria um for assim

for (int L = 0; L < n1; i++) {
          String var = fileListDiff[L];
          String unit = fileListDiffU[L];                        
          String value = fileListDiffV[L];
          
          system.out.println(var + unit + value);           
}

Isso é só um exemplo. Mas como ficaria um forEach acessando 3 listas?

obs.: Eu coloquei a variável do for sendo L pra nao confundir com o itálico da formatação que é usada aqui.

8 Respostas

E

sei lá como,que eu saiba foreach foi feito para uma lista só…
dei uma googada e não achei nada tbm…

mais vc pode fazer um objeto com três campos e setar esses valores no objeto, depois fazer uma lista desse objeto e mandar pra tela…

vc tem o resultado esperado…

ajudei?

N

Faça a iteração por uma dos vetores e utilize o indice “i” para os demais:

&lt;c:forEach var="customer" items="fileListDiff"&gt;
  &lt;c:out value="${customer}"/&gt;
  &lt;c:out value="${fileListDiffU[i]}"/&gt;
&lt;/c:forEach&gt;

Não tenho certeza de que funciona. Dá um retorno.

tluisrs

Cara, eu fiz assim

<c:forEach var="i" begin="0" end="${n1}">
     <c:set var="var" value="${form.fileListDiff[i]" />
     <c:set var="unit" value="${form.fileListDiffU[i]}" />
     <c:set var="unit" value="${form.fileListDiffV[i]}" />
                                                      
     <tr>
          <td align='right'>${var}</td>
          <td><input type='text' name='diff${i}' value='${value}'></td>
     </tr>
</c:forEach>

Funcionou

E

funciona tbm…

n1 e quem? as listas tem o mesmo numero de elementos? e quanto não tiver?

tluisrs

Ai gente, estou com mais uma dúvida em relação ao forEach.

Estou escrevendo uma página JSP e apareceu a necessidade de colocar um forEach aninhado com outro. Não sei se é problema do Eclipse (estou usando o Europa). Vou colocar o trecho de código

<c:forEach var="v" begin="0" end="4">
     <c:set var="conta" value="0"></c:set>
     <td>
          <table border="0"><tbody class="texto">
               <c:forEach var="i" begin="0" end="${form.fileListBound.length}">
                    <c:set var="var" value="${form.fileListBound[i]}" />     
                    <c:if test="${conta < 2}">
                         ${campos}++
                         <%--Insere uma caixa de checagem --%>
                         <tr>
                              <td align="right">${var}</td>
                              <td><input>
                         </tr>
                         ${campos}++
                                                                              
                    </c:if>
               </c:forEach>
</c:forEach>

Ai o primeiro forEach ta sublinado de vermelho dizendo o seguinte:

Missing end tag "c:forEach".

Se alguém já teve um erro deve me avisa.

Valeu

VinicerasMG

Thales

O <c:forEach> aninhado dentro de outro é perfeitamente possível.
Está faltando as tags de fechamento de

e entre os fechamentos das tags <c:forEach>.

Falow

tluisrs

Então quer dizer que eu tenho que fechar a tabela dentro do forEach ?

N

Como vc tá abrindo a tag dentro do loop, várias <table> (5) serão criadas e o correto seria fechá-las dentro do forEach. Se vc tiver necessidade de acrescentar algo mais dentro da mesma table, talvez devesse tirar o código do foreach.

Criado 20 de fevereiro de 2008
Ultima resposta 21 de fev. de 2008
Respostas 8
Participantes 4