【问题标题】:Render a Map of lists as a table in grails将列表的 Map 渲染为 grails 中的表格
【发布时间】:2015-07-11 20:46:18
【问题描述】:

我有一个控制器,它将哈希图传递给视图。地图有3个元素,其中之一如下:

-- 列表列表(A),其中list3是列表列表

现在我想在 gsp 上显示如下:

-----------------------------------------------------------------------------
A.list1     |       A.list2     |       A.list3[0]      |       A.list4     |
            |                   |       A.list3[1]      |                   |
            |                   |       A.list3[2]      |                   |
----------------------------------------------------------------------------

我对生成视图知之甚少,我只需要这里的表格格式。没有比这更花哨的了。我只想要表格,因为数据只有在那种格式下才有意义。谢谢。

【问题讨论】:

    标签: grails views gsp


    【解决方案1】:

    欢迎来到 Grails 世界。希望你有一个很棒的经历。不确定您是否知道,但通过生成视图,即自动生成的默认脚手架 CRUD 元素,最具体地说,list.gsp 具有大部分逻辑。尽管如此,我再次审查了您的问题,并且可以看到您卡在地图上,该地图上有一个非常简单的清单。就这样吧:

    <g:each in="${A}" var="myMap">
    <tr>
     <td>${myMap.list1}</td>
     <td>${myMap.list2}</td>
     <td>
      <g:each in="${myMap.list3}"  status="i" var="myList3">
       ${myList3} <!-- this should be what you want I have added below -->
       <!-- ${myList3?.name} --> <!-- explained further below -->
       <!-- ${i} : ${myList3} --> <!--where i is this is the iterator -->
      </g:each>
      </td>
     <td>${myMap.list4}</td>
     </tr>
     </g:each>
    

    我输入 cmets myList3?.name 只是因为如果列表实际上是域对象的绑定,那么您可以显示正在返回的域类中的元素。

    所以:

    class Country {
      String name
      static hasMany=[cities:Cities]
    }
    
    Class Cities {
      String name
      static belongsTo=[Country:country]
    }
    

    如果 A 是 ${country} 并且 list3 是城市,那么 .name 实际上会显示作为绑定值的城市名...

    在其他未绑定 domainClass 的原始映射返回到 gsp 的示例中,您可以使用键值定义来解析:

    raw map being passed to gsp

    private Map menuMap = ['index':'Socket method', 'ajaxpoll':'Ajax poll',
            'socketremote':'RemoteForm Websocket', 'scsocket':'NEW: Websocket Client/Server']
    

    navbar gsp

    <g:each in="${menuMap }" var="cmenu">
                <li <g:if test="${actionName == cmenu.key}">class="active"</g:if>>
                    <g:link action="${cmenu.key}">
                        ${cmenu.value}
                    </g:link>
                </li>
            </g:each>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 2023-03-25
      • 2020-01-21
      • 2023-03-14
      相关资源
      最近更新 更多