可以说我有这样的地图(从控制器返回)
a= [a:[1,2,3,4],b:[5,6,7,8],c:[9,10]]
[a] //returning [a] from controller to the view
Run Code Online (Sandbox Code Playgroud)
现在在Grails视图中,我应该如何渲染它们以使它们在我的浏览器中看起来像这样:
a
-- 1
-- 2
-- 3
-- 4
b
-- 5
-- 6
-- 7
-- 8
//so on..
Run Code Online (Sandbox Code Playgroud)
我在显示细节的特定情况下做了类似的事情(提示来自Antoine给出的答案):
<html>
<head>
<title>
All Tasks.
</title>
<meta name ="layout" content="main" />
</head>
<body>
<h2>All the task</h2>
<g:each in="${tasksByDate}" var ="tasks">
<h4>${tasks.key}</h4>
<g:each in="${tasksByDate.value}" var="content" >
<div id = "todayswork">
${content}
</div>
<hr/>
</g:each>
<br />
</g:each>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是当我在浏览器中渲染它时,我只在浏览器中获得标题.像这样 :
All the task
//other contents missing. . .
Run Code Online (Sandbox Code Playgroud)
而且我确信从控制器alltasks中将值传递给视图,并带有名称tasksByDate.正如它在我的控制台上打印一样:
[2011-12-19 14:21:35.949:[Belongs to Schedule Finish task A], 2011-12-21 14:21:35.897:[Belongs to Schedule Finish task A], 2011-12-23 14:21:35.907:[Belongs to Schedule Finish task A], 2011-12-19 14:21:36.051:[Belongs to Schedule Finish task A], 2011-12-17 14:21:36.048:[Belongs to Schedule Finish task A]]
Run Code Online (Sandbox Code Playgroud)
这是我的控制器代码:
def alltasks = {
def allTasks = DaySchedule.findAllByTaskIsNotNull()
def tasksByDate = [:]
tasksByDate.putAll(
allTasks.groupBy {
it.Todaysdate
}
)
println tasksByDate
[tasksByDate]
}
Run Code Online (Sandbox Code Playgroud)
我在哪里弄错了?
提前致谢.
您可以使用迭代迭代地图元素g:each.map元素的关键方法将返回键(示例中的a,b,c),该value方法将返回关联的值(在您的情况下,是整数列表).反过来,您可以g:each在此列表中使用.
这是我在GSP中要做的事情:
<ul>
<g:each var="mapElement" in="${a}">
<li>$mapElement.key
<ul>
<g:each in="${mapElement.value}" var="number">
<li>$number</li>
</g:each>
</ul>
</li>
</g:each>
</ul>
Run Code Online (Sandbox Code Playgroud)
根据您的格式,我推断您要将地图显示为列表列表,因此嵌套<ul>元素.