如何在Grails视图中渲染贴图

如何在Grails视图中渲染贴图,grails,groovy,Grails,Groovy,假设我有一个这样的映射(从控制器返回) 现在在Grails视图中,我应该如何渲染它们,使它们在我的浏览器中看起来像这样: a -- 1 -- 2 -- 3 -- 4 b -- 5 -- 6 -- 7 -- 8 //so on.. 编辑: 我在一个显示细节的特定案例中做了类似的事情(从以下给出的答案中得到提示): 我确信,从控制器alltasks中,该值将传递给视图,名称为tasksByDate。当它在我的控制台上打印时,如下所

假设我有一个这样的映射(从控制器返回)

现在在Grails视图中,我应该如何渲染它们,使它们在我的浏览器中看起来像这样:

a
    -- 1
    -- 2 
    -- 3
    -- 4

b
    -- 5
    -- 6
    -- 7
    -- 8
//so on..
编辑: 我在一个显示细节的特定案例中做了类似的事情(从以下给出的答案中得到提示):

我确信,从控制器
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]]
这是我的控制器代码:

def alltasks = {
    def allTasks = DaySchedule.findAllByTaskIsNotNull()
    def tasksByDate = [:]
    tasksByDate.putAll(
        allTasks.groupBy { 
             it.Todaysdate  
        }
    )
    println tasksByDate
    [tasksByDate]
    }
我在哪里犯错


提前谢谢

您可以使用
g:each
在地图元素上迭代。map元素的key方法将返回key(在您的示例中为a、b、c),而
value
方法将返回关联的值(在您的示例中为整数列表)。依次,您可以在此列表中使用
g:each

以下是我在普惠制中的做法:

<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>
  • $mapElement.key
    • $number

根据您的格式,我推断您希望将地图显示为列表列表,因此嵌套了
元素。

在控制器中,替换allTasks操作的最后一行:

[tasksByDate]
。。。由

[tasksByDate : tasksByDate]
控制器操作的返回(据我所知)应该是一个映射,而不是一个列表。键是您将在GSP中检索的变量的名称,值是该变量的内容


参见第6.1.3章“模型和视图”

这样,即使我尝试过。。。但是我的屏幕上没有任何输出。。。我已经用一个案例更新了我的问题,那么现在我需要如何更改我的视图(.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>
[tasksByDate]
[tasksByDate : tasksByDate]