Groovy Grails垂直而不是水平显示列表
我试图在Groovy服务器页面(GSP)上垂直显示项目列表,而不是水平显示。目前,我的列表水平显示。情况如下: 示例1Groovy Grails垂直而不是水平显示列表,grails,groovy,Grails,Groovy,我试图在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 ]
[ 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),我执行了以下操作:
<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>
在我的控制器中,我定义了一个简单的列表:
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吗
提前感谢您的帮助。您应该能够做到:
list.collate( 3 ).transpose().flatten()
您应该能够做到:
list.collate( 3 ).transpose().flatten()
在控制器中:
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>
${item}
在控制器中:
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>
${item}
问题,蒂姆:在输出列表之前,我把上面的代码放在我的控制器中,我似乎得到了与“示例1”相同的结果。我是不是太密集了,还是为了让它像例2那样工作,我做的不对?@meoww-list=list.collate(3).transpose().flatte()
应该使列表相等[A,D,G,J,B,E,H,K,C,F,I,L]
问题,蒂姆:在输出列表之前,我把上面的代码放在我的控制器中,我似乎得到了与我的“示例1”相同的结果。我只是为了让它像示例2那样工作,或者我做得不对吗?@meoww-list=list.collate(3).transpose().flatte()
应该使列表相等[A,D,G,J,B,E,H,K,C,F,I,L]
谢谢詹姆斯。我也喜欢这个解决方案。谢谢你把它贴在这里。干杯汉克·詹姆斯。我也喜欢这个解决方案。谢谢你把它贴在这里。干杯