2014-12-30 131 views
0

我正在研究<g:each>。我得到了一个array with size = 6。我想创建一个每个tr有4个td的表。 例如:我做循环数组with size = 6Groovy 4 td后的每个新tr

<tr> 
    <td>1</td> 
    <td>2</td> 
    <td>3</td> 
    <td>4</td> 
</tr> 
<tr> 
    <td>5</td> 
    <td>6</td> 
</tr> 
+1

groovys'collat​​e'呢? – cfrick

回答

5

您可以使用g:eachstatus后4 TD有条件地开始新的一行:

<tr> 
    <g:each var="it" status="i" in="${ar}"> 
     <g:if test="${ i > 0 && i % 4 == 0 }"></tr><tr></g:if> 
     <td>${it}</td> 
    </g:each> 
    </tr> 
3

虽然用户@ user2472199给出的解决方案但通过以这种方式使用Groovy的collate方法,您可以更清晰地编写它:

<g:each var="trElement" in="${ar.collate(4)}"> 
    <tr> 
     <g:each var="tdElement" in="${trElement}"> 
      <td>${tdElement}</td> 
     </g:each> 
    </tr> 
</g:each> 

这将保持gsp看起来干净,并避免编辑器中的任何HTML验证错误。

+0

感谢您的解决方案。我真的很感激它,顺便说一句。 –

相关问题