将目录中的所有文件写入.gsp页面

时间:2016-08-14 04:14:21

标签: grails

假设我有一个gsp页面,我想加载特定文件夹中的所有脚本:

<html>
<head>
{each file in $path}
<asset:javascript src="file" />
</head>
</html>

假设$path是目录路径。大多数模板语言都有办法做到这一点,所以我确信Grails可以实现它。但我不确定如何实现它。我的最终目标是: ndex

<html>
<head>
<asset:javascript src="js/util.js" />
<asset:javascript src="js/util2.js" />
<asset:javascript src="js/index.js" />
</head>
</html>

请帮忙。

1 个答案:

答案 0 :(得分:1)

您可以这样做:

<html>
    <head>
        <g:each var="file" in="${(new File(path)).listFiles()*.path}">
            <asset:javascript src="${file}" />
        </g:each>
    </head>
</html>

GSP g:each标记是在使用GSP时在Grails中执行迭代的方式。 in 属性用于指定要迭代的Iterable。在这种情况下,它是表达式:

(new File(path)).listFiles()*.path

表达意味着:

  1. new File(path) - 创建一个Java File对象来表示目录 path
  2. .listFiles() - 返回由File个对象表示的所有文件和目录(不包括子目录)的列表。
  3. *.path - 一个spread operator表达式,它返回文件路径String的列表,有效地将File个对象转换为String个。它相当于.collect { it.path }