0

Groovy Server Page (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 に答える