loops - 如何将 map 列表传递到GSP页面 View 并对其进行迭代

标签 loops grails groovy gsp

假设我们要显示有关文件夹文件的信息。我们必须将每个文件的信息保存在Map中。然后,将这些 map 添加到列表中。

Controller Action :

def show() {

    List results = new ArrayList();

    File dir = getDir(params.id);

    if (dir.exists()) {
        dir.eachFile { 

        Map fileInformation= new java.util.LinkedHashMap()

        fileInformation.put("name", it.getName());
        fileInformation.put("size", it.length());
        fileInformation.put("path", it.getAbsolutePath() );

        results.add(fileInformation);

        }
    }

    [filesOfFolderData: result]
}

也许,这是我在 View 中获取数据的最佳尝试(我遵循here的方法,但运气不佳):
<g:each in="${filesOfFolderData}">

    <p> it: ${it}</p>
    <p> it.properties: ${it.properties} </p>

    <g:each var="propertyEntry" in="${it.properties}">

        <p> propertyEntry.key: ${propertyEntry.key} </p>
        <p> propertyEntry.value: ${propertyEntry.value} </p>
        <p> propertyEntry.value.name: ${propertyEntry.value} </p>           

    </g:each>

</g:each>

这就是Internet浏览器显示的内容(请注意:由于简化了代码,因此我的结果基于第一例的真实结果,结果的第一行可能会有所不同):
it: [{name=wololo1, size=35, path=c:\}, {name=wololo2, size=35, path=c:\}]

it.properties: {class=class java.util.ArrayList, empty=false}

propertyEntry.key: class

propertyEntry.value: class java.util.ArrayList

propertyEntry.value.name: class java.util.ArrayList

propertyEntry.key: empty

propertyEntry.value: false

propertyEntry.value.name: false 

我们如何迭代列表?

最佳答案

在 map 中使用each时,您可以访问keyvalue,因此只需遍历该值即可。

<g:each in="${filesOfFolderData}" var="files">
  <g:each in="${files.value}" var="file">
    ...
  </g:each>
</g:each>

关于loops - 如何将 map 列表传递到GSP页面 View 并对其进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598486/

相关文章:

excel - VBA循环结合Lastrow并查找空白值

configuration - grails base.dir 系统属性

groovy - 是否有可能突破groovy中的封闭

ajax - grails和AJAX动态搜索

Qt QImageReader不会循环,不可控

javascript - 将一周中的几天放入列表中,然后重新开始

c++ - 迭代器,循环导致段错误!为什么循环太多了?

sql - 渲染的Json与SQL混合

grails - Geb在Grails应用中发现错误的&lt;title&gt;标签

hibernate - 在排序闭包中,如何最后获取空值?