フォルダのファイルに関する情報を表示したいとしましょう。各ファイルの情報をマップに保存する必要があります。次に、これらのマップをリストに追加します。
コントローラーのアクション:
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]
}
たぶん、これはビューでデータを取得するための私の最善の試みです (私はここのアプローチに運がありませんでした):
<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 を反復処理するにはどうすればよいでしょうか。