假设我们要显示有关文件夹文件的信息。我们必须在Map中保存每个文件的信息。然后,将这些地图添加到列表中。
控制器操作:
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]
}
也许,这是我在视图中获取数据的最佳尝试(我遵循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>
这是互联网浏览器显示的内容(注意:结果的第一行可能有点不同,因为我简化了代码,所以我的访客导致我的案例真实结果的基础):
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
我们如何迭代List?
答案 0 :(得分:2)
在地图中使用each
,您可以访问key
和value
,因此只需迭代该值。
<g:each in="${filesOfFolderData}" var="files">
<g:each in="${files.value}" var="file">
...
</g:each>
</g:each>
答案 1 :(得分:1)
好吧,你可以使用下面给出的代码: 例如:
filesOfFolderData= [{name=wololo1, size=35, path=c:\}, {name=wololo2, size=35, path=c:\}]
<g:each in="${filesOfFolderData}" var="fileMap">
<g:each in="${fileMap}" var="file">
${file.key}: ${file.value}
</g:each>
</g:each>
输出:
name: wololo1
size: 35
path: c:\
name: wololo2
size:35
path: c:\
希望有所帮助!!!
由于
答案 2 :(得分:0)
我们必须创建地图地图,而不是地图列表:
def show() {
def results = []
File dir = getDir(params.id);
if (dir.exists()) {
dir.eachFile {
results << [
name: it.getName(),
size: it.length(),
it.getAbsolutePath()
]
}
}
[filesOfFolderData: result]
}
然后,@ SergioMichels的解决方案将完美运行(我复制并粘贴他的解决方案):
<g:each in="${filesOfFolderData}" var="files">
<g:each in="${files.value}" var="file">
...
</g:each>
</g:each>