MOTA1
Janeiro 31, 2011, 11:28am
#1
Oi Galera,
Tenho uma tabela no banco com 10 números, do 1 ao 10. Depois coloquei estes numeros numa lista no java, blz. Mas preciso mostrar esses numeros de 3 em 3 usando o forEach da JSTL:
<c:forEach var="dado" items="${dados}">
<li>${dado.numero}</li>
</c:forEach>
Nesse caso a cada iteração ele vai mostrar de 1 em 1, existe uma forma de mostrar (a cada iteração) de 3 em 3 dentro da
?
Se puderem me ajudar agradeço. vlw.
dkenji
Janeiro 31, 2011, 12:27pm
#2
kra, use o varStatus da tag e manipule as li
<c:forEach var="dado" items="${dados}" varStatus="contador">
</c:forEach>
tipo , usando ${contador.count % 3 == 0} e ${contador.count % 3 > 1}
Olá!
Dá pra fazer assim tb:
<%
pageContext.setAttribute("dados",new int[]{1,2,3,4,5,6,7,8,9,10});
%>
<c:forEach items="${dados}" var="dado" begin="0" step="3">
${dado}
</c:forEach>
Esse código vai te dar a saída
1 3 5 7 9
Abs.
MOTA1
Janeiro 31, 2011, 5:00pm
#4
Humm… quase galera
mas vamos supor o seguinte, tenho uma lista de números do 1 ao 18, estou tentando colocar 2 forEach desta maneira:
<c:forEach var="dado" items="${dados}" varStatus="contador">
<c:if test="${contador.count <= 3}">
<li>
<c:forEach var="dado" items="${dados}" varStatus="contador">
<c:if test="${contador.count <= 6}">
${dado.numero}
</c:if>
</c:forEach>
</li>
</c:if>
</c:forEach>
pois preciso imprimir na primeira iteração, 1,2,3,4,5,6
na segunda iteração: 7,8,9,10,11,12
e na última: 13,14,15,16,17,18
mas do jeito que estou fazendo é sempre (claro) impresso 1,2,3,4,5,6 em todas as iterações. Nesta parte do foreach que não estou conseguindo.
entenderam?
vlw de novo.
Tente isso:
<c:forEach var="dado" items="${dados}" varStatus="contador">
<li> ${dado.numero}</li>
<c:if test="${contador.count % 6 == 0}">
<c:out value="<br/>">
</c:if>
</c:forEach>
o resultado deve ser:
linha 1 => 1 2 3 4 5 6
linha 2 => 7 8 9 10 11 12
linha 3 => 13 14 15 16 17 18
espero que ajude!!!
MOTA1
Fevereiro 1, 2011, 3:23pm
#6
Então Jhonatan morais, no seu código você imprime um número por
, eu precisaria de 6 números por , sendo que a cada 3, exista uma quebra de linha.
E além disso esses números do 1 ao 18, não são estáticos, eles vão mudar. agora são do 1 ao 18, depois 1 ao 19… e por ai vai, por isso queria um jeito dinâmico de mostrar eles.
algo assim:
<li>
1 2 3
4 5 6
</li>
<li>
7 8 9
10 11 12
</li>
<li>
13 14 15
16 17 18
</li>
ta um desafio aqui. haha
Pow motta essa tá facil. faz assim ó:
<li>
<c:forEach var="dado" items="${dados}" varStatus="contador">
${dado.numero}
<c:if test="${contador.count % 3 == 0}">
<c:out value="<br/>">
</c:if>
<c:if test="${contador.count % 6 == 0}">
<c:out value="</li><br/><li>">
</c:if>
<c:if test="${contador.count % 18 == 0}">
<c:out value="</li>">
</c:if>
</c:forEach>
Forte abraço, Motta
e se essa for a solução lembrese de colocar [RESOLVIDO] no titulo do post ok!!!
MOTA1
Fevereiro 2, 2011, 9:13pm
#8
Opa da hora, mas ele imprime 1 vez a mais do que precisa né, porque na última vez o
é sempre aberto, não?
vlw
brother
troca essa linha
<c:if test="${contador.count % 6 == 0}">
por esta
<c:if test="${(contador.count % 6 == 0) && (contador.count != 18) }">
agora acho que vc ja entendeu a logica.
se quiser fazer qualquer outro tipo de teste usa a class abaixo que ela vai te ajudar:
public class Teste {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("<li>");
for(int i = 1; i<=18; i++){
System.out.print(i+" ");
if(i % 3 == 0) {
System.out.println();
}
if((i % 6 == 0)&& (i != 18)){
System.out.println("</li>");
System.out.println();
System.out.println("<li>");
}
if(i % 18 == 0){
System.out.println("</li>");
}
}
}
}
até.
MOTA1
Fevereiro 3, 2011, 11:27am
#10
blz, entendi sim. vlw brother.
Olá ::MOTA::,
embora o tópico esteja resolvido, achei uma solução que resolve o seu problema, segue código
public class MyClass {
public MyClass() {
}
public static void main(String[] args) {
int quantidadeTotal = 18;
System.out.print("<li>\n");
for(int i = 1; i <= quantidadeTotal; i++) {
if(i % 3 != 0) {
System.out.print(i + " ");
}
else if(i % 6 != 0) {
System.out.print(i + "\n");
}
else if(i < quantidadeTotal) {
System.out.print(i + "\n</li>\n\n<li>\n");
}
else {
System.out.print(i + "\n</li>");
}
if(i == quantidadeTotal && quantidadeTotal % 3 != 0) {
System.out.print("\n</li>");
}
else if(i == quantidadeTotal && quantidadeTotal == 3) {
System.out.print("</li>");
}
}
}
}
Resultado:
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
16 17 18
Espero ter ajudado!
Até mais