Matriz em Velocity

Boas,

Ando à algum tempo a habituar-me a usar velocity para fazer os layout dinamicos das paginas para a web, mas o problema é que o velocity é um bocado limitado quando se trata de ciclos.
Por exemplo, como posso fazer uma matriz dinamica 9x9 (tabela html) que imprima os numero de 1 a 81 (9 x 9) em cada espaço da celula… como faço isto apenas com o ciclo foreach?

A ideia é fica algo como isto:

| 1   |  2 |   3 |   4 |  5  |  6 |  7  |  8  |  9  |

1 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
3 | 19 | 20 … etc

9 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 |

Fica aqui o desafio para quem quiser aceitar…

PEACE!

Utilize o “range” do #foreach:

<table border="1">
#foreach ($y in [1..9])
	<tr>
	#foreach ($x in [1..9])
	<td>$x</td>
	#end
	</tr>
#end
</table>

isso deve funcionar!

Rafael

Isso o que vai fazer é preencher 9 vezes os numeros de 1 a 9 e não é essa a ideia… é a ideia é preencher os numeros de 1 a 81 dentro de uma matriz…

ok… entao eh so vc mulplicar $y * $x e vc tera os numeros no format que desejar!

Rafael

Vc estava a dizer assim: ?

<table border="1"> #foreach ($y in [1..9]) <tr> #foreach ($x in [1..9]) #set($val = $x * $y) <td>$val</td> #end </tr> #end </table>

Se for isto continua a nao ser assim que queria… veja o exemplo que coloquei logo no inicio… os numeros têm q ir mesmo de 1 a 81 (todos), só que 9 numeros por linha… do 1 até ao 81… numa matriz de 9x9…

E assim?

<table>
<tr>
#foreach ($i in [1..81])
#if ($i %9 == 0)</tr><tr>#end
<td>$i</td>
#end
</tr>
</table>

Rafael

muito bem Rafael, é isso mesmo… a formação é que nao ficou mto bem feita… a sua primeira linha so tem 8 numeros…

eu fiz assim:

<table> <tr> #set ($count = 0) #foreach ($item in [1..9]) #foreach ($item2 in [1..9]) #set ($count = $count + 1) <td>$count</td> #end </tr> #end </table>

PEACE!

Galera, estou procurando uma solução parecida com este caso, porém ao inves de apresentar números montará radiobuttons numa matriz 5l x 2c.

Os radios estão sendo colocados todos na vertical sem problemas de momento.

Possuo este código:

[code]

	#if ($campo.opcoes)
		
		#foreach( $opt in $campo.getOpcoesArray() )
			 
			<tr>
				<td nowrap="nowrap" class="labelFieldGrid">    				  				    			
					<input type="radio" name="${campo.nome}" value="$opt.codigo" ${campo.status} onClick="$metodo"	#if ($opt.codigo == $campo.valor) CHECKED #end>$opt.nome
				</td>    				    				
				
				    				    				
			</tr>				
		#end
		
	#end
[/code]

Gostaria de Add dentro do laço um novo

com o proximo input. Os inputs são formados a partir de uma lista String chamada ‘opcoes’, e são separados por “||” dentro desta string.

Tentei iterar o contador $opt para imprimir no outro

mas sem sucesso, tipo:
<tr>
<td><input type="radio" name="${campo.nome}" value="$opt.codigo" ${campo.status} onClick="$metodo"	#if ($opt.codigo == $campo.valor) CHECKED #end>$opt.nome </td>
#set ($opt = $opt +1)
<td><input type="radio" name="${campo.nome}" value="$opt.codigo" ${campo.status} onClick="$metodo"	#if ($opt.codigo == $campo.valor) CHECKED #end>$opt.nome </td>
<tr>

A lista sai apenas duplicada na outra coluna…

Alguem sabe como poderia fazer para que todos radios fossem colocados nessa matriz 5 x 2 ?