假设我有一个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>
请帮忙。
答案 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
表达意味着:
new File(path)
- 创建一个Java File
对象来表示目录 path 。.listFiles()
- 返回由File
个对象表示的所有文件和目录(不包括子目录)的列表。*.path
- 一个spread operator表达式,它返回文件路径String
的列表,有效地将File
个对象转换为String
个。它相当于.collect { it.path }
。