我是groovy和grails的新手,因此这个简单的怀疑。我有这样的地图:[0:[A,B,C,D],1:[a,b,c,d]]。我想按如下方式显示:
A:a
B:b
C:C:D:d
如何显示数据列明智?我现在的.gsp如下所示,它所做的只是按行显示值。
<!DOCTYPE html>
<html>
<head>
<meta name="layout" content="main">
<title>Parsed Map</title>
</head>
<body>
<table>
<g:each in="${myMap}" var="element">
<tr>
<g:each in="${element.value }" >
<th>${it}</th>
</g:each>
</tr>
</g:each>
</table>
</body>
</html>
指出我正确的方向来理解groovy中的地图也将不胜感激。谢谢。
答案 0 :(得分:2)
假设您已经验证了列和标题列表具有相同数量的元素,您可以执行以下操作...
<html>
<head>
<meta name="layout" content="main">
<title>Parsed Map</title>
</head>
<body>
<table>
<g:each var="heading" in="${headings}" status="counter">
<tr>
<th>${heading}</th>
<td>${values[counter]}</td>
</tr>
</g:each>
</table>
</body>
</html>
答案 1 :(得分:0)
我认为您的示例是您真实问题的简化版本。根据您真正想要做的事情,您有很多选择。一个简单的事情可能是这样的(按照你喜欢的方式组织表格,但这应该给你一个想法......):
// grails-app/controllers/com/demo/DemoController.groovy
package com.demo
class DemoController {
def index() {
// presumably you got this Map from somewhere and it isn't hardcoded here
def someMap = [0:['A', 'B', 'C', 'D'], 1:['a', 'b', 'c', 'd']]
def headings = someMap[0]
def values = someMap[1]
[headings: headings, values: values]
}
}
// grails-app/views/demo/index.gsp
<html>
<head>
<meta name="layout" content="main">
<title>Parsed Map</title>
</head>
<body>
<table>
<tr>
<g:each var="heading" in="${headings}">
<th>${heading}</th>
</g:each>
</tr>
<tr>
<g:each var="value" in="${values}">
<th>${value}</th>
</g:each>
</tr>
</table>
</body>
</html>