0

フォルダのファイルに関する情報を表示したいとしましょう。各ファイルの情報をマップに保存する必要があります。次に、これらのマップをリストに追加します。

コントローラーのアクション:

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 を反復処理するにはどうすればよいでしょうか。

4

3 に答える 3

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:\

それが役立つことを願っています!!!

ありがとう

于 2013-09-04T06:23:22.483 に答える