0

我试图在 Groovy 服务器页面 (GSP) 上垂直而不是水平显示项目列表。目前,我的列表是水平显示的。如下所示:

示例 1

[ A ] [ B ] [ C ]
[ D ] [ E ] [ F ]
[ G ] [ H ] [ I ]
[ J ] [ K ] [ L ]

我希望我的列表垂直显示,或者按以下顺序显示,而不是水平显示此列表:

示例 2:我希望完成的任务

[ A ] [ E ] [ I ]
[ B ] [ F ] [ J ]
[ C ] [ G ] [ K ]
[ D ] [ H ] [ L ]

为了完成水平列表的显示(示例 1),我执行了以下操作:

在我的控制器中,我定义了一个简单的列表:

def test() {
  def list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']
  [items: list]
 }

在我的 test.gsp 页面上,我有以下内容:

<table>
        <tr>
            <%
            def counter = 0

            for (i in items) {
            counter = counter+1

            println("<td>" + i + "</td>")

            if (counter == 3) {
                println("</tr><tr>")
                counter = 0
            }
        }
        %>
    </tr>
</table>

有谁知道如何让我的列表看起来像示例 2?

在此先感谢您的帮助。

4

2 回答 2

3

你应该能够做到:

list.collate( 3 ).transpose().flatten()
于 2013-03-10T06:55:27.087 回答
1

在您的控制器中:

List list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']
int size = list.size()
int modVal = 3

[items: list.collate( (size / modVal).toInteger() ).transpose().flatten(), modVal: modVal]

在视图中:

<tr>
  <g:each in="${items}" var="item" status="i">
    <g:if test="${i % modVal == 0 && i != 0}">
      </tr><tr>
    </g:if>
    <td>${item}</td>
  </g:each>
</tr>
于 2013-03-10T20:10:24.640 回答