Wie übergeben Sie eine Liste der Karten, um eine GSP-Seite anzeigen und Durchlaufen Sie es
Sagen wir, wir wollen zeigen, Informationen über die Dateien in einem Ordner. Wir haben die Informationen speichern, die jeder Datei in einer Karte. Dann fügen Sie diese Karten in eine Liste.
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]
}
Vielleicht, das ist mein bestes versucht, um die Daten in der Ansicht (ich folgte dem Ansatz der hier mit kein Glück):
<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>
Dies ist, was der Internet-Browser zeigt (Hinweis: die erste Zeile der Resultat könnte ein wenig anders, wie ich den code vereinfachen, so dass ich Gast, das Ergebnis in der Basis des realen Ergebnis meiner Fall):
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
Wie könnten wir die Liste Durchlaufen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
each
Karten haben Sie Zugriff auf diekey
undvalue
werden, so dass nur die Iteration über den Wert.Gut, können Sie verwenden Sie den unten angegebenen code ein:
Beispiel:
Ausgabe:
Hoffe, das hilft!!!
Dank
Groovy:unexpected char: '\' @ line 95, column 66.
ich es geändert:def filesOfFolderData= [{url="wololo1", thumbnail_url="35", name="c:\\"} {url="wololo2", thumbnail_url="35", name="c:\\"}]
. Aber es gibt einen compiler-Fehler auf dem ersten Komma:Groovy:expecting '}', found ',' @ line 94, column 41.
ich habe versucht, ohne Kommas und andere compiler-Fehler...Statt einer Liste von Karten, die wir haben, um eine Karte zu erstellen von Karten:
Dann, die Lösung von @SergioMichels perfekt funktionieren wird (ich copy&paste seine Lösung):